時間比較的幾種方法

經常要比較時間,但是總是忘記需要搜索,希望記錄下來,加深印象

1.使用時間戳比較時間 使用date.getTime() 獲取時間戳

注:時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateCompareTest {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String stringDate = "2020-03-11 12:12:11";
        Date date = (Date) format.parse(stringDate);  
        Date time = new Date();

        long timeStamp1 = date.getTime();
        long timeStamp2 = date.getTime();
        System.out.println(timeStamp1);   //時間戳:1583899931000
        System.out.println(timeStamp1 > timeStamp2);  //輸出false

    }
}

2. 使用Date實例的compareTo()方法。這個是比較時間,不是比較日期

使用:date1.compareTo(date2) 。 這裏兩個

返回值:如果date1小於date2, 返回-1,;如果date1 等於 date2,返回0;如果date1 大於 date2,返回1

public class DateCompareTest {

    public static void main(String[] args) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String strNow = format.format(new Date());
        Date now = format.parse(strNow);
        System.out.println(now);

        String stringDate = "2020-03-11";  //Date時間,格式:Sun Jan 11 00:00:00 CST 2020,
        Date date = (Date) format.parse(stringDate);
        System.out.println(date);

        System.out.println(date.compareTo(now));   //輸出-1

    }
}

注意,String日期格式化Date 會給他默認的時間 00:00:00

String stringDate = "2020-03-11";  //Date時間,格式:Sun Jan 11 00:00:00 CST 2020,
Date date = (Date) format.parse(stringDate);
3. 使用before(); after(); 返回類型boolean
public class DateCompareTest {

    public static void main(String[] args) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String stringDate = "2020-03-11 12:12:11";
        Date date = (Date) format.parse(stringDate);
        Date time = new Date();

        System.out.println(date.after(time));    //輸出false
        System.out.println(date.before(time));   //輸出true
    }
}
小知識補充

經常看到格式化有不同的寫法,不仔細看,還以爲他們一樣,其實還是有差別的

  • yyyy-MM-dd HH:mm:ss
  • yyyy-MM-dd HH:mm:ssS
  • yyyy-mm-dd hh:mm:ss
SimpleDateFormat 語法 SimpleDateFormat語法解釋
G 年代標誌
y
M
d
h 時(在上午或下午1-12)
H 時(一天 0~23)
m
s
S 毫秒
E 星期
D 一年中的第幾天
F 一個月的第幾個星期幾
w 一年中的第幾個星期
W 一月中的第幾個星期
a 上午 / 下午 標記符
k 時 (在一天中 1~24)
K 時 (在上午或下午 0~11)
z 時區

這些可以自己搭配使用

public class SimpleDateFormatTest {
    public static void main(String[] args) {
        Date now = new Date();
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        SimpleDateFormat format2 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
        SimpleDateFormat format3 = new SimpleDateFormat("yyyy年MM月dd日 一年中的第 D 天 一年中第w個星期 一月中第W個星期");
        System.out.println(format1.format(now));  //輸出 2020/03/12 14:38:34
        System.out.println(format2.format(now));  //輸出 2020年03月12日 14時38分34秒
        System.out.println(format3.format(now));  //輸出2020年03月12日 一年中的第 72 天 一年中第11個星期 一月中第2個星期
    }
}

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