本篇博客主要總結java里面關於獲取當前時間的一些方法
一、System.currentTimeMillis()
獲取標准時間可以通過System.currentTimeMillis()方法獲取,此方法不受時區影響,得到的結果是時間戳格式的。例如:
1543105352845
我們可以將時間戳轉化成我們易於理解的格式
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
Date date = new Date(System.currentTimeMillis());
System.out.println(formatter.format(date));
則該時間戳對應的時間為:
2018-11-25 at 01:22:12 CET
值得注意的是,此方法會根據我們的系統時間返回當前值,因為世界各地的時區是不一樣的。
二、java.util.Date
在Java中,獲取當前日期最簡單的方法之一就是直接實例化位於Java包java.util的Date類。
Date date = new Date();
上面獲取到的日期也可以被format成我們需要的格式,例如:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
System.out.println(formatter.format(date));
三、Calendar API
Calendar類,專門用於轉換特定時刻和日歷字段之間的日期和時間。
使用Calendar 獲取當前日期和時間非常簡單:
Calendar calendar = Calendar.getInstance();
與date一樣,我們也可以非常輕松地format這個日期成我們需要的格式
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
System.out.println(formatter.format(calendar.getTime()));
上面代碼打印的結果如下:
25-11-2018 00:43:39
四、Date/Time API
Java 8提供了一個全新的API,用以替換java.util.Date和java.util.Calendar。Date / Time API提供了多個類,幫助我們來完成工作,包括:
-
LocalDate
-
LocalTime
-
LocalDateTime
-
ZonedDateTime
-
LocalDate
-
LocalDate只是一個日期,沒有時間。 這意味着我們只能獲得當前日期,但沒有一天的具體時間。
LocalDate date = LocalDate.now();
我們可以format它
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); System.out.println(date.format(formatter));
得到的結果只有年月日,例如:
25-11-2018
-
LocalTime
-
LocalTime與LocalDate相反,它只代表一個時間,沒有日期。 這意味着我們只能獲得當天的當前時間,而不是實際日期:
LocalTime time = LocalTime.now(); // get the current time
可以按如下方式format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); System.out.println(time.format(formatter));
得到的結果類似如下:
00:55:58
-
LocalDateTime
最后一個是LocalDateTime,也是Java中最常用的Date / Time類,代表前兩個類的組合 - 即日期和時間的值:
LocalDateTime dateTime = LocalDateTime.now();
format的方式也一樣
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"); System.out.println(dateTime.format(formatter));
得到的日期結果類似於:
25-11-2018 00:57:20