最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java開(kāi)發(fā)基礎(chǔ)日期類代碼詳解

 更新時(shí)間:2017年10月17日 14:12:05   作者:liuyazhuang  
這篇文章主要介紹了Java開(kāi)發(fā)基礎(chǔ)日期類的相關(guān)內(nèi)容,代碼通過(guò)日期工具類獲取指定月份的星期與日期對(duì)應(yīng)關(guān)系,以及獲取指定月份的所有日期與星期集合等,具有一定參考價(jià)值,需要的朋友可以了解下。

由于工作關(guān)系,很久沒(méi)更新博客了,今天就給大家?guī)?lái)一篇Java實(shí)現(xiàn)獲取指定月份的星期與日期對(duì)應(yīng)關(guān)系的文章,好了,不多說(shuō),我們直接上代碼:

一、日期工具類

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;
/**
 * 日期工具類,獲取指定月份的星期與日期的對(duì)應(yīng)關(guān)系
 * @author liuyazhuang
 *
 */
public class DateUtils {
	public static final String DATE_FORMAT = "yyyy-MM-dd";
	public enum Type{
		Year, Month, Date
	}
	/**
	 * 獲取兩個(gè)時(shí)間之間的年份
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public static int getYears(Date startDate, Date endDate, Type type){
		int count = 0;
		 Calendar calBegin = Calendar.getInstance(); //獲取日歷實(shí)例 
		 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:當(dāng)前月, 1:下一個(gè)月; 2下下月; 以此類推... -1:上一個(gè)月; -2:上上一個(gè)月 ; 以此類推....
	 * @param length:終止月份, 0:當(dāng)前月, 1:下一個(gè)月; 2下下月; 以此類推... -1:上一個(gè)月; -2:上上一個(gè)月 ; 以此類推....
	 * @return:日期和星期集合:星期為key 日期為value
	 */
	public static Map<String, List<String>> getKeyFromMapByValue(int offset, int length){
		return getKeyFromMapByValue(getDateKeyWeekValue(offset, length));
	}
	/**
	 * 將以date為key, week為value的map轉(zhuǎn)化為以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:當(dāng)前月, 1:下一個(gè)月; 2下下月; 以此類推... -1:上一個(gè)月; -2:上上一個(gè)月 ; 以此類推....
	 * @param length:終止月份, 0:當(dāng)前月, 1:下一個(gè)月; 2下下月; 以此類推... -1:上一個(gè)月; -2:上上一個(gè)月 ; 以此類推....
	 * @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;
	}
	/**
	 * 獲取當(dāng)前日期所在月份的所有日期,指定月份的所有日期
	 * @param date:當(dāng)前日期
	 * @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;
	}
	/**
	 * 根據(jù)日期獲得星期
	 * @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);
	}
}

二、測(cè)試類

package com.lyz.date; 
import net.sf.json.JSONObject; 
/** 
 * 測(cè)試工具類 
 * @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))); 
  } 
} 

三、測(cè)試結(jié)果

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

總結(jié)

本文通過(guò)代碼示例向大家展示了日期工具類的幾種用法,希望對(duì)大家學(xué)習(xí)Java有所幫助。

感興趣的朋友可以參閱:Java語(yǔ)言Lang包下常用的工具類介紹、Java AtomicInteger類的使用方法詳解等以及本站其他相關(guān)專題,如有不足之處,歡迎留言指出,小編會(huì)及時(shí)回復(fù)大家并更正。感謝朋友們對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • SpringBoot Mybatis 配置文件形式詳解

    SpringBoot Mybatis 配置文件形式詳解

    這篇文章主要介紹了SpringBoot Mybatis 配置文件形式詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • pagehelper踩坑記之分頁(yè)亂套問(wèn)題解決

    pagehelper踩坑記之分頁(yè)亂套問(wèn)題解決

    這篇文章主要為大家介紹了pagehelper踩坑記之分頁(yè)亂套問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作

    Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作

    這篇文章主要介紹了Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot中的WebSocketSession原理詳解

    SpringBoot中的WebSocketSession原理詳解

    這篇文章主要介紹了SpringBoot中的WebSocketSession原理詳解,傳統(tǒng)的?HTTP?協(xié)議是無(wú)法支持實(shí)時(shí)通信的,因?yàn)樗且环N無(wú)狀態(tài)協(xié)議,每次請(qǐng)求都是獨(dú)立的,無(wú)法保持連接。為了解決這個(gè)問(wèn)題,WebSocket?協(xié)議被引入,需要的朋友可以參考下
    2023-07-07
  • Spring?Boot?整合?Reactor實(shí)例詳解

    Spring?Boot?整合?Reactor實(shí)例詳解

    這篇文章主要為大家介紹了Spring?Boot?整合?Reactor實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • JAVA實(shí)現(xiàn)網(wǎng)絡(luò)/本地圖片轉(zhuǎn)BASE64存儲(chǔ)代碼示例

    JAVA實(shí)現(xiàn)網(wǎng)絡(luò)/本地圖片轉(zhuǎn)BASE64存儲(chǔ)代碼示例

    這篇文章主要給大家介紹了關(guān)于JAVA實(shí)現(xiàn)網(wǎng)絡(luò)/本地圖片轉(zhuǎn)BASE64存儲(chǔ)的相關(guān)資料,Base64是網(wǎng)絡(luò)上最常見(jiàn)的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個(gè)可打印字符來(lái)表示二進(jìn)制數(shù)據(jù)的方法,需要的朋友可以參考下
    2023-07-07
  • java中處理socket通信過(guò)程中粘包的情況

    java中處理socket通信過(guò)程中粘包的情況

    本篇文章主要介紹了java中處理socket通信過(guò)程中粘包的情況,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • java實(shí)現(xiàn)列表、集合與數(shù)組之間轉(zhuǎn)化的方法

    java實(shí)現(xiàn)列表、集合與數(shù)組之間轉(zhuǎn)化的方法

    這篇文章主要介紹了java實(shí)現(xiàn)列表、集合與數(shù)組之間轉(zhuǎn)化的方法,涉及java中列表、集合與數(shù)組相互轉(zhuǎn)換的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Java設(shè)計(jì)模式之備忘錄模式(Memento模式)介紹

    Java設(shè)計(jì)模式之備忘錄模式(Memento模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之備忘錄模式(Memento模式)介紹,memento是一個(gè)保存另外一個(gè)對(duì)象內(nèi)部狀態(tài)拷貝的對(duì)象,這樣以后就可以將該對(duì)象恢復(fù)到原先保存的狀態(tài),需要的朋友可以參考下
    2015-03-03
  • 【Java IO流】字節(jié)流和字符流的實(shí)例講解

    【Java IO流】字節(jié)流和字符流的實(shí)例講解

    下面小編就為大家?guī)?lái)一篇【Java IO流】字節(jié)流和字符流的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09

最新評(píng)論

新干县| 电白县| 遂昌县| 永善县| 荥阳市| 黑山县| 共和县| 光山县| 霍山县| 建德市| 称多县| 安西县| 西藏| 永昌县| 新化县| 天门市| 扶风县| 磐石市| 金沙县| 佛坪县| 江川县| 太谷县| 肥城市| 清徐县| 浦北县| 高陵县| 扎赉特旗| 高雄县| 栖霞市| 昂仁县| 上饶县| 合山市| 内丘县| 黄骅市| 新化县| 静海县| 鱼台县| 安多县| 方正县| 敦化市| 诸暨市|