java 獲取前一天日期


首先來一個錯誤的示例:

public static void main(String[] args) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date parse = sdf.parse("2017-01-01");
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(parse);
    calendar.roll(Calendar.DAY_OF_YEAR, -1);
//    calendar.roll(Calendar.DAY_OF_MONTH, -1);
//    calendar.roll(Calendar.DAY_OF_WEEK, -1);
    Date prevDay = calendar.getTime();
    System.out.println(sdf.format(prevDay));
}    

上面的代碼,2017-01-01 往前一天,我們希望得到 2016-12-31,但是結果是 2017-12-31。

要獲取真實的日期,應該這樣:

public static void main(String[] args) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date day = sdf.parse("2017-01-01");
    
    long ms = day.getTime() - 1*24*3600*1000L;
    Date prevDay = new Date(ms);
    System.out.println(sdf.format(prevDay));
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM