1. 程式人生 > 其它 >Java獲得任意一個時間的下一天的時間

Java獲得任意一個時間的下一天的時間

一、問題

獲得任意一個時間的下一天的時間

二、分析

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;
    }
}