Java獲得任意一個時間的下一天的時間
阿新 • • 發佈:2021-10-25
本文為joshua317原創文章,轉載請註明:轉載自joshua317部落格https://www.joshua317.com/article/177
一、問題
獲得任意一個時間的下一天的時間
二、分析
Java提供了java.util.Date類來處理日期格式的資料,通過它可以得到其所代表的日期的年月日和時分秒資訊。因此,可以很自然地想到,要得到任何一個時間的下一天的時間,為Date的Day資料加上1天即可。但是,如果是月底怎麼辦?如果是年底怎麼辦?如果還是閏年怎麼辦?如果要在加上1天之前,進行這些判斷的話,這樣的程式就會變得相當的複雜。
其實,java.util.Date類的底層的實現是通過一個long型的整型資料來儲存日期的,這個值記錄的是任何一個時間距1970年1月1日,0日0分0秒的毫秒數。
這裡可以驗證一下,通過執行下面一段程式碼可以得到一個整型數字51。
package com.joshua317; import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("當前時間:" + simpleDateFormat.format(date)); //當前的毫秒數 long time=System.currentTimeMillis(); //得到距今多少年 System.out.println("距今:" + time/1000/60/60/24/365 + "年"); } }
因此,完全可以不用管給定的時間是否是月底、年底或閏月的月底等條件,直接為它的毫秒數加上24小時所代表的毫秒數即可,然後再用新的long型的毫秒數構造一個新的Date型別的物件,該Date物件就是給定時間的下一天時間。
三、程式設計
package com.joshua317; import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("當前時間:" + simpleDateFormat.format(date)); Date nextDate = getNextDay(date); System.out.println("下一天時間:" + simpleDateFormat.format(nextDate)); } public static Date getNextDay(Date date) { //1天24小時,1小時60分鐘,1分鐘60秒,1秒1000毫秒 long addTime = 1 * 24 * 60 * 60 * 1000; Date nextDate = new Date(date.getTime() + addTime); return nextDate; } }
本文為joshua317原創文章,轉載請註明:轉載自joshua317部落格https://www.joshua317.com/article/177