JDK8日期時間操作小匯總


統一使用java.time.*包下的類

1、獲取當前的日期、時間、日期加時間

LocalDate todayDate = LocalDate.now(); //今天的日期


LocalTime now = LocalTime.now(); //此刻的時間--精確到毫秒


LocalDateTime now = LocalDateTime.now(); //此刻時間--年-月-日-時-分-秒-毫秒

 2、獲取單獨年日月時分秒

LocalDateTime now = LocalDateTime.now();
System.out.println("年:"+now.getYear());
System.out.println("月:"+now.getMonthValue());
System.out.println("日:"+now.getDayOfMonth());
System.out.println("時:"+now.getHour());
System.out.println("分:"+now.getMinute());
System.out.println("秒:"+now.getSecond());
System.out.println("該日期是該年的第"+now.getDayOfYear()+"天");

3、將特定的時間轉成LocalDate、LocalTime、LocalDateTime  都有很多的重載的方法

LocalDate of1 = LocalDate.of(2019, 1, 16);
System.out.println(of1);
LocalTime of2 = LocalTime.of(9, 25, 36);
System.out.println(of2);
LocalDateTime of3 = LocalDateTime.of(of1, of2);
System.out.println(of3);
LocalDateTime of4 = LocalDateTime.of(2019, 1, 14, 9, 26, 25);
System.out.println(of4);

 4、判斷時間是否相等(日期、時間、日期加時間)時間的比較精確到納秒,可以先將時間進行格式化,然后比較,可以控制精度問題

// 日期
LocalDate date1 = LocalDate.of(2019, 1, 17);
LocalDate date2 = LocalDate.now();
if (date1.equals(date2)) {
    System.out.println("日期相等");
} else {
    System.out.println("日期不相等");
}
// 時間
LocalTime date1 = LocalTime.of(9, 46);
LocalTime date2 = LocalTime.now();
if (date1.equals(date2)) {
    System.out.println("時間相等");
} else {
    System.out.println("時間不相等");
}
// 時間加日期
LocalDateTime date1 = LocalDateTime.of(2019,1,17,9,47);
LocalTime date2 = LocalTime.now();
if (date1.equals(date2)) {
    System.out.println("時間加日期相等");
} else {
    System.out.println("時間加日期不相等");
}

 5、檢查周幾這種周期性的事件

DayOfWeek of = DayOfWeek.THURSDAY;
DayOfWeek from = DayOfWeek.from(LocalDate.now());
if (from.equals(of)) {
    System.out.println("今天是周四");
} else {
    System.out.println("今天不是周四");
}
DayOfWeek from1 = DayOfWeek.from(LocalDate.of(2019, 1, 10));
if (from1.equals(of)) {
    System.out.println("該日期是周四");
} else {
    System.out.println("該日期不是周四");
}

 6、指定時間之后或之前XXX的時間

LocalDateTime now = LocalDateTime.now();
System.out.println("當前時間"+now);
System.out.println("當前時間之前2天:"+now.minusDays(2));
System.out.println("當前時間之后2天:"+now.plusDays(2));
System.out.println("當前時間之前2周:"+now.minusWeeks(2));
System.out.println("當前時間之后2周:"+now.plusWeeks(2));
System.out.println("當前時間之前2月:"+now.minusMonths(2));
System.out.println("當前時間之后2月:"+now.plusMonths(2));
System.out.println("當前時間之前2年:"+now.minusYears(2));
System.out.println("當前時間之后2年:"+now.plusYears(2));
System.out.println("當前時間之前2小時:"+now.minusHours(2));
System.out.println("當前時間之后2小時:"+now.plusHours(2));
System.out.println("當前時間之前2分鍾:"+now.minusMinutes(2));
System.out.println("當前時間之后2分鍾:"+now.plusMinutes(2));
System.out.println("當前時間之前2秒:"+now.minusSeconds(2));
System.out.println("當前時間之后2秒:"+now.plusSeconds(2));

 7、比較時間的先后

LocalDateTime now = LocalDateTime.now();
System.out.println("當前時間:"+now);
LocalDateTime appointTime = LocalDateTime.of(2019, 1, 17, 9, 32, 12);
System.out.println("指定時間:"+appointTime);
System.out.println(now.isAfter(appointTime));
System.out.println(now.isBefore(appointTime));

 8、格式化時間格式及按照一定格式解析

LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("HH:mm:ss");
//格式化
String format = now.format(formatter);
String format2 = now.format(formatter2);
String format3 = now.format(formatter3);
System.out.println("格式化1:" + format);
System.out.println("格式化2:" + format2);
System.out.println("格式化3:" + format3);
//解析
LocalDateTime localDateTime = LocalDateTime.parse(format, formatter);
LocalDate localDate = LocalDate.parse(format2, formatter2);
LocalTime localTime = LocalTime.parse(format3, formatter3);
System.out.println("解析1:" + localDateTime);
System.out.println("解析2:" + localDate);
System.out.println("解析3:" + localTime);

9、根據指定的毫秒數獲取LocalDateTime對象

Long nowMilli = new Date().getTime();
LocalDateTime localDateTime = Instant.ofEpochMilli(nowMilli).atZone(ZoneId.of("+8")).toLocalDateTime();
System.out.println(localDateTime);

注:+8 表示東八區,即常說的北京時間

10、通過LocalDateTime對象獲取毫秒數

LocalDateTime now = LocalDateTime.now();
long l = now.atZone(ZoneId.of("+8")).toInstant().toEpochMilli();
System.out.println(l);

注:+8 表示東八區,即常說的北京時間

11、通過LocalDateTime對象獲取秒數

LocalDateTime now = LocalDateTime.now();
long second = now.toEpochSecond(ZoneOffset.of("+8"));
System.out.println(second);

 注:+8 表示東八區,即常說的北京時間

12、判斷指定日期是否是閏年(只LocalDate)

LocalDate now = LocalDate.now();
if (now.isLeapYear()) {
    System.out.println("now是閏年");
} else {
    System.out.println("now不是閏年");
}

13、使用默認格式解析時間(LocalDateTime對象可解析的格式yyyy-MM-ddTHH:mm:ss)--不是空格了,是T

LocalDateTime dateTime = LocalDateTime.parse("2019-01-14T12:04:12");
int monthValue = dateTime.getMonthValue();
int minute = dateTime.getMinute();
System.out.println(monthValue+":"+minute);
LocalTime time = LocalTime.parse("19:14:25");
int hour = time.getHour();
System.out.println(hour);
LocalDate date = LocalDate.parse("2019-01-12");
int year = date.getYear();
System.out.println(year);

14、總結

      jdk8中提供三個類(LocalDate,LocalTime,LocalDateTime),它們分別對年月日、時分秒和年月日時分秒進行單獨的處理,使用時可以根據自己的實際情況進行選擇,它們的API類似。

      Date與LocalDateTime、LocalDate、LocalTime互轉參考  https://www.cnblogs.com/exmyth/p/6425878.html


免責聲明!

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



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