>  기사  >  Java  >  Java에서 기본 날짜 클래스를 개발하는 예제에 대한 자세한 설명

Java에서 기본 날짜 클래스를 개발하는 예제에 대한 자세한 설명

黄舟
黄舟원래의
2017-10-18 10:14:391159검색

이 글에서는 Java 개발 시 기본 날짜 클래스 관련 내용을 주로 소개합니다. 코드에서는 날짜 도구 클래스를 사용하여 지정된 달의 요일과 날짜 간의 대응 관계를 얻고 모든 날짜의 컬렉션을 가져옵니다. 특정 월의 날짜 등 특정 참조 값이 있으며 필요한 경우 친구가 알아낼 수 있습니다.

일 때문에 오랫동안 블로그를 업데이트하지 못했습니다. 오늘은 요일과 특정 달의 대응 관계를 Java로 얻는 방법에 대한 기사를 가져옵니다. 설명, 코드로 바로 가보겠습니다:

一, 날짜 도구 카테고리


package com.lyz.date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.chwl.medical.utils.common.CollectionUtils;
import com.chwl.medical.utils.common.ObjectUtils;
/**
 * 日期工具类,获取指定月份的星期与日期的对应关系
 * @author liuyazhuang
 *
 */
public class DateUtils {
	public static final String DATE_FORMAT = "yyyy-MM-dd";
	public enum Type{
		Year, Month, Date
	}
	/**
	 * 获取两个时间之间的年份
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public static int getYears(Date startDate, Date endDate, Type type){
		int count = 0;
		 Calendar calBegin = Calendar.getInstance(); //获取日历实例 
		 Calendar calEnd = Calendar.getInstance(); 
		 calBegin.setTime(startDate);
		 calEnd.setTime(endDate);
		 if(Type.Year == type){
			 count = calEnd.get(Calendar.YEAR) - calBegin.get(Calendar.YEAR); 
		 }else if(Type.Month == type){
			 count = calEnd.get(Calendar.MONTH) - calBegin.get(Calendar.MONTH); 
		 }else{
			 count = calEnd.get(Calendar.DATE) - calBegin.get(Calendar.DATE); 
		 }
		 return count;
	}
	/**
	 * 获取指定月份的所有日期和星期集合
	 * @param offset:起止月份, 0:当前月, 1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推....
	 * @param length:终止月份, 0:当前月, 1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推....
	 * @return:日期和星期集合:星期为key 日期为value
	 */
	public static Map<String, List<String>> getKeyFromMapByValue(int offset, int length){
		return getKeyFromMapByValue(getDateKeyWeekValue(offset, length));
	}
	/**
	 * 将以date为key, week为value的map转化为以week为key, date为value的map
	 * @param dateWeek
	 * @return
	 */
	public static Map<String, List<String>> getKeyFromMapByValue(Map<String, String> dateWeek){
		Map<String, List<String>> weekDate = new HashMap<String, List<String>>();
		if(!CollectionUtils.isEmpty(dateWeek)){
			for(Map.Entry<String, String> entry : dateWeek.entrySet()){
				//获取日期集合
				List<String> list = weekDate.get(entry.getValue());
				if(ObjectUtils.isEmpty(list)){
					list = new ArrayList<String>();
				}
				list.add(entry.getKey());
				weekDate.put(entry.getValue(), list);
			}
		}
		return weekDate;
	}
	/**
	 * 获取指定月份的所有日期和星期集合
	 * @param offset:起止月份, 0:当前月, 1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推....
	 * @param length:终止月份, 0:当前月, 1:下一个月; 2下下月; 以此类推... -1:上一个月; -2:上上一个月 ; 以此类推....
	 * @return:日期和星期集合:日期为key 星期为value
	 */
	public static Map<String, String> getDateKeyWeekValue(int offset, int length){
		Map<String, String> map = new HashMap<String, String>();
		for(int i = offset; i <= length; i++){
			List<Date> list = getAllTheDateOftheMonth(new Date(),i);
			for(Date date: list){
				String weekDay = getDateOfWeek(date);
				map.put(parseDateToString(date, DATE_FORMAT), weekDay);
			}
		}
		return map;
	}
	/**
	 * 获取当前日期所在月份的所有日期,指定月份的所有日期
	 * @param date:当前日期
	 * @param n:1下一月;2:下下月..以此类推; -1:上月,-2:上上月...以此类推
	 * @return:返回指定月份的所有日期
	 */
	public static List<Date> getAllTheDateOftheMonth(Date date, int n) {
		List<Date> list = new ArrayList<Date>();
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.DATE, 1);
		cal.add(Calendar.MONTH, n);
		int month = cal.get(Calendar.MONTH);
		while(cal.get(Calendar.MONTH) == month){
			list.add(cal.getTime());
			cal.add(Calendar.DATE, 1);
		}
		return list;
	}
	/**
	 * 根据日期获得星期
	 * @param date
	 * @return
	 */
	public static String getDateOfWeek(Date date) {
		//String[] weekDaysName = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		String[] weekDaysCode = { "0", "1", "2", "3", "4", "5", "6" };
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
		if(intWeek < 0) intWeek = 0;
		return weekDaysCode[intWeek];
	}
	public static String parseDateToString(Date date, String formatString) {
		return getSimpleDateFormat(formatString).format(date);
	}
	public static SimpleDateFormat getSimpleDateFormat(String formatString) {
		return new SimpleDateFormat(formatString);
	}
}

2. 테스트 카테고리


package com.lyz.date; 
import net.sf.json.JSONObject; 
/** 
 * 测试工具类 
 * @author liuyazhuang 
 * 
 */ 
public class TestDate { 
  public static void main(String[] args) { 
    System.out.println(JSONObject.fromObject(DateUtils.getDateKeyWeekValue(-1, 1))); 
    System.out.println(JSONObject.fromObject(DateUtils.getKeyFromMapByValue(-1,1))); 
  } 
}

3. 테스트 결과


{
  "2017-02-28": "2",
  "2017-04-19": "3",
  "2017-04-17": "1",
  "2017-02-25": "6",
  "2017-04-18": "2",
  "2017-02-24": "5",
  "2017-04-15": "6",
  "2017-02-27": "1",
  "2017-04-16": "0",
  "2017-02-26": "0",
  "2017-04-13": "4",
  "2017-02-21": "2",
  "2017-04-14": "5",
  "2017-02-20": "1",
  "2017-04-11": "2",
  "2017-02-23": "4",
  "2017-04-12": "3",
  "2017-02-22": "3",
  "2017-04-21": "5",
  "2017-04-20": "4",
  "2017-04-08": "6",
  "2017-04-09": "0",
  "2017-04-04": "2",
  "2017-04-05": "3",
  "2017-04-06": "4",
  "2017-04-07": "5",
  "2017-04-01": "6",
  "2017-04-02": "0",
  "2017-04-03": "1",
  "2017-04-10": "1",
  "2017-02-07": "2",
  "2017-02-06": "1",
  "2017-02-09": "4",
  "2017-02-08": "3",
  "2017-03-29": "3",
  "2017-03-25": "6",
  "2017-03-26": "0",
  "2017-03-27": "1",
  "2017-02-01": "3",
  "2017-03-28": "2",
  "2017-03-21": "2",
  "2017-02-03": "5",
  "2017-03-22": "3",
  "2017-02-02": "4",
  "2017-03-23": "4",
  "2017-02-05": "0",
  "2017-03-24": "5",
  "2017-02-04": "6",
  "2017-03-31": "5",
  "2017-03-30": "4",
  "2017-04-23": "0",
  "2017-04-22": "6",
  "2017-02-19": "0",
  "2017-04-25": "2",
  "2017-02-18": "6",
  "2017-04-24": "1",
  "2017-02-17": "5",
  "2017-04-27": "4",
  "2017-04-26": "3",
  "2017-04-29": "6",
  "2017-03-18": "6",
  "2017-04-28": "5",
  "2017-03-19": "0",
  "2017-02-12": "0",
  "2017-03-16": "4",
  "2017-02-11": "6",
  "2017-03-17": "5",
  "2017-02-10": "5",
  "2017-03-14": "2",
  "2017-03-15": "3",
  "2017-02-16": "4",
  "2017-03-12": "0",
  "2017-02-15": "3",
  "2017-03-13": "1",
  "2017-02-14": "2",
  "2017-03-10": "5",
  "2017-02-13": "1",
  "2017-03-11": "6",
  "2017-03-20": "1",
  "2017-03-09": "4",
  "2017-03-08": "3",
  "2017-03-07": "2",
  "2017-03-06": "1",
  "2017-03-05": "0",
  "2017-03-04": "6",
  "2017-03-03": "5",
  "2017-03-02": "4",
  "2017-04-30": "0",
  "2017-03-01": "3"
}


rreee

Summary

이 기사에서는 코드 예제를 통해 날짜 도구 클래스의 여러 용도를 보여 주며 Java를 배우는 모든 사람에게 도움이 되기를 바랍니다.

위 내용은 Java에서 기본 날짜 클래스를 개발하는 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.