Java處理日期時間的方法匯總
一、java.util.Calendar介紹
Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距歷元(即格林威治標(biāo)準(zhǔn)時間 1970 年 1 月 1 日的 00:00:00.000,格里高利歷)的偏移量。
二、簡單示例
// 通過格式化輸出日期 java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance();// 取當(dāng)前日期。 System.out.println("Today is:" + format.format(cal.getTime())); cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, -1);// 取當(dāng)前日期的前一天. System.out.println("yesterday is:" + format.format(cal.getTime())); cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, +1);// 取當(dāng)前日期的后一天. System.out.println("nextday is:" + format.format(cal.getTime()));
或者
java.util.Date today=new java.util.Date(); java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd"); java.text.SimpleDateFormat dateTimeFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("Today is "+dateFormat.format(today)); System.out.println("Now is "+dateTimeFormat.format(today));
二、構(gòu)造特定時間
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = new GregorianCalendar(2007, 11, 25,0,0,0); Date date = calendar.getTime(); System.out.println("2007 Christmas is:"+format.format(date));
GregorianCalendar構(gòu)造方法參數(shù)依次為:年,月-1,日,時,分,秒.
或者
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date date= format.parse("2007-12-25"); System.out.println("2007 Christmas is:"+format.format(date));
三、取日期的每部分
int year =calendar.get(Calendar.YEAR); int month=calendar.get(Calendar.MONTH)+1; int day =calendar.get(Calendar.DAY_OF_MONTH); int hour =calendar.get(Calendar.HOUR_OF_DAY); int minute =calendar.get(Calendar.MINUTE); int second =calendar.get(Calendar.SECOND);
取月份要加1
四、獲取當(dāng)前月份的最大天數(shù)
Calendar cal = Calendar.getInstance(); int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println(day);
五、取當(dāng)月的最后一天
Calendar cal = Calendar.getInstance(); int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH); java.text.Format formatter3=new java.text.SimpleDateFormat("yyyy-MM-"+maxDay); System.out.println(formatter3.format(cal.getTime()));
六、取當(dāng)月的第一天
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-01"); java.util.Date firstDay=new java.util.Date(); System.out.println("the month first day is "+formats.format(firstDay));
七、求兩個日期之間相隔的天數(shù)
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date beginDate= format.parse("2007-12-24"); java.util.Date endDate= format.parse("2007-12-25"); long day=(date.getTime()-mydate.getTime())/(24*60*60*1000); System.out.println("相隔的天數(shù)="+day);
八、一年前的日期
java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date todayDate=new java.util.Date(); long beforeTime=(todayDate.getTime()/1000)-60*60*24*365; todayDate.setTime(beforeTime*1000); String beforeDate=formatter.format(todayDate); System.out.println(beforeDate);
九、一年后的日期
java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date todayDate=new java.util.Date(); long afterTime=(todayDate.getTime()/1000)+60*60*24*365; todayDate.setTime(afterTime*1000); String afterDate=formatter.format(todayDate); System.out.println(afterDate);
十、10小時后的時間
java.util.Calendar Cal=java.util.Calendar.getInstance(); Cal.setTime(dateOper); Cal.add(java.util.Calendar.HOUR_OF_DAY,10); System.out.println("date:"+forma.format(Cal.getTime()));
十一、10小時前的時間
java.util.Calendar Cal=java.util.Calendar.getInstance(); Cal.setTime(dateOper); Cal.add(java.util.Calendar.HOUR_OF_DAY,-10); System.out.println("date:"+forma.format(Cal.getTime()));
十二、當(dāng)前日期的星期一和星期天
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); GregorianCalendar cal = new GregorianCalendar(); int dayInWeek = cal.get(Calendar.DAY_OF_WEEK); int offset = 0; if (dayInWeek == 1) { // 星期天 offset = 6; } else { // 星期一至星期六 offset = dayInWeek - 2; } cal.add(GregorianCalendar.DAY_OF_MONTH, -offset); String sday = dateFormat.format(cal.getTime()); cal.add(GregorianCalendar.DAY_OF_MONTH, 6); String eday = dateFormat.format(cal.getTime()); System.out.println("這個星期的星期一:" + sday); System.out.println("這個星期的星期天:" + eday);
十二、獲取當(dāng)前日期所在的星期屬于今年的第幾周
GregorianCalendar cal = new GregorianCalendar(); int weekOfYear = cal.get(Calendar.WEEK_OF_YEAR); System.out.println("這個星期屬于第幾周:" + weekOfYear);
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
關(guān)于各種排列組合java算法實(shí)現(xiàn)方法
這篇文章介紹了幾種用JAVA實(shí)現(xiàn)的排列組合算法,有需要的朋友可以參考一下2013-06-06SpringBoot2.1 RESTful API項目腳手架(種子)項目
這篇文章主要介紹了SpringBoot2.1 RESTful API項目腳手架(種子)項目,用于搭建RESTful API工程的腳手架,只需三分鐘你就可以開始編寫業(yè)務(wù)代碼,不再煩惱于構(gòu)建項目與風(fēng)格統(tǒng)一,感興趣的小伙伴們可以參考一下2018-12-12詳解springboot和vue前后端分離開發(fā)跨域登陸問題
這篇文章主要介紹了詳解springboot和vue前后端分離開發(fā)跨域登陸問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Spring Cloud Alibaba Nacos 入門詳解
這篇文章主要介紹了Spring Cloud Alibaba Nacos入門詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03Java基礎(chǔ)之?dāng)?shù)組超詳細(xì)知識總結(jié)
這篇文章主要介紹了Java基礎(chǔ)之?dāng)?shù)組詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05使用WebUploader實(shí)現(xiàn)上傳文件功能(一)
這篇文章主要為大家詳細(xì)介紹了使用WebUploader實(shí)現(xiàn)上傳文件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01Hibernate使用hbm.xml配置映射關(guān)系解析
這篇文章主要介紹了Hibernate使用hbm.xml配置映射關(guān)系解析,具有一定參考價值,需要的朋友可以了解下。2017-11-11