国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java 獲取指定時間的前一天Date

2019-11-07 22:52:19
字體:
供稿:網(wǎng)友

開發(fā)過程中需要獲取指定Date時間的前一天。本來覺得挺簡單的,用Calender.roll()方法回滾一天就行了,但是在測試過程中發(fā)現(xiàn)roll()方法在跨年日期下會輸出錯誤,于是查資料發(fā)現(xiàn)使用set()方法更方便可靠。于是記錄在此。

代碼在 github上,和greenDao連在一塊了。

代碼如下:

public class DateClass { public static void main(String[] args) throws ParseException { getYesterDayDate("20160102"); getYesterDayDate("20160101"); getYesterDayDate("20151231"); } public static void getYesterDayDate(String date) throws ParseException { //解析指定Date SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd", Locale.getDefault()); Date parseDate = simpleDateFormat.parse(date); //設(shè)置Calendar Calendar calendar = GregorianCalendar.getInstance(); calendar.setTime(parseDate); /* * 核心代碼,回滾到前一天。 */ //backOne(calendar);//錯誤 backTwo(calendar);//正確 //轉(zhuǎn)換格式 String format = simpleDateFormat.format(calendar.getTime()); System.out.PRintln(format); } //使用roll()方法回滾 private static void backOne(Calendar calendar) { calendar.roll(Calendar.DAY_OF_YEAR, -1); } //使用set()方法回滾 private static void backTwo(Calendar calendar) { int day = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, day - 1); }}

上述兩種back方式會輸出不同的結(jié)果。

使用backOne()方法 即使用 calendar.roll() 方法回滾,不會得到正確的結(jié)果。 輸出結(jié)果為:

2016010120161231 //這項不對20151230

使用backTwo()方法 即使用calendar.set()方法回滾。是正確的。 輸出結(jié)果為:

201601012015123120151230

結(jié)語:

roll()方法并不會級聯(lián)設(shè)置。即使使用GregorianCalendar也會有些問題。 set()方法會很好的處理年月日之間的變化。

同樣也可通過該方法獲取后一天,前一月、后一月等等。

善于使用Calender的API有時候會大大減少代碼量。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 崇明县| 丽水市| 周宁县| 高台县| 弥渡县| 龙岩市| 伊金霍洛旗| 临邑县| 宾川县| 青河县| 东港市| 额敏县| 铁岭市| 台北县| 永善县| 井研县| 盖州市| 华蓥市| 嘉荫县| 甘洛县| 游戏| 茌平县| 苗栗市| 公主岭市| 司法| 仙桃市| 礼泉县| 昭苏县| 庆城县| 平利县| 尖扎县| 曲水县| 阳信县| 湘乡市| 宝兴县| 霞浦县| 奉节县| 泽州县| 慈利县| 留坝县| 白城市|