當前日期減去指定天數後 ,日期沒有減少反而增加了

當前日期減去指定天數後 ,日期沒有減少反而增加了

這也許是一個很蠢的事情,之所以寫下來是爲了 銘記 這次蠢事 , 告誡自己以後細心一些 , 另一反面也抱着僥倖心理 , 覺得自己不是第一個幹這種事情人 , 偉大點說是幫助後者解惑 , 自私些就是當你看到這篇博文是我也在”嘲笑”你和我一樣 , 希望你也長點心.

事情的經過是這樣的

需求是提供一個API接口供合作方查詢指定日期的訂單情況 , 有一個起始日期和結束日期 .如果兩個日期有一個不傳就默認查詢從昨天開始30天的訂單 . 請注意 , 是30天.

代碼如下:

 Calendar currentCalendar = Calendar.getInstance();
 currentCalendar.set(currentCalendar.get(Calendar.YEAR),    
 currentCalendar.get(currentCalendar.DATE), 0, 0, 0);           
 Date dateEnd = currentCalendar.getTime();              
 Date dateStart = new Date(dateEnd.getTime() - (1000 * 60 * 60 * 24 * 30)); 

各位可以運行一下,結果卻是出乎意料
我當前的時間是: Wed Feb 15 00:00:00 CST 2017
減去30天的時間是: Mon Mar 06 17:02:47 CST 2017

要不是親眼所見,我就信了……………


問題原因

(1000 * 60 * 60 * 24 * 30)超出了int的數值範圍 , 此時爲負數

解決辦法

(1000 * 60 * 60 * 24 * 30l) 加個l轉爲long型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章