【當年筆記】日期和時間操作
阿新 • • 發佈:2022-05-30
一、獲取日期並格式化
1.使用Date類
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sf.format(new Date()));
獲取星期幾:new SimpleDateFormat("E").format(new Date())
獲取當前時區:new SimpleDateFormat("Z").format(new Date*())
2.使用 Calendar 類
Calendar calendar = Calendar.getInstance(); Date time = calendar.getTime() 獲取前一天 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -1); //字串轉時間 SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // String 轉 Date String str = "2012-10-10 10:10:10"; System.out.println(sf.parse(str));
3.使用LocalDateTime、LocalDate、LocalTime。
- LocalDate 只包含日期,不包含時間,不可變類,且執行緒安全。
- LocalTime 只包含時間,不包含日期,不可變類,且執行緒安全。
- LocalDateTime 既包含了時間又包含了日期,不可變類,且執行緒安全。
// 獲取日期 LocalDate localDate = LocalDate.now(); // 獲取時間 LocalTime localTime = LocalTime.now(); // 獲取日期和時間 LocalDateTime localDateTime = LocalDateTime.now(); long milli = Instant.now().toEpochMilli(); // 獲取當前時間戳(精確到毫秒) long second = Instant.now().getEpochSecond(); // 獲取當前時間戳(精確到秒) // 時間格式化① DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String timeFormat = dateTimeFormatter.format(LocalDateTime.now()); System.out.println(timeFormat); // output:2019-08-16 21:15:43 // 時間格式化② String timeFormat2 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); System.out.println(timeFormat2); // output:2019-08-16 21:17:48 //字串轉時間 String timeStr = "2012-10-10 06:06:06"; LocalDateTime dateTime = LocalDateTime.parse(timeStr,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); System.out.println(dateTime); //獲取昨天時間 LocalDateTime today = LocalDateTime.now(); LocalDateTime yesterday = today.plusDays(-1); System.out.println(yesterday);
4 常用程式碼段
// 獲取本月的最後一天(JDK 8 以前) Calendar ca = Calendar.getInstance(); ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); System.out.println(ca.getTime()); // 獲取本月的最後一天(JDK 8) LocalDate today = LocalDate.now(); System.out.println(today.with(TemporalAdjusters.lastDayOfMonth())); //獲取當前時間戳當前時間戳: 1 System.currentTimeMillis() 2 new Date().getTime() 3 Calendar.getInstance().getTime().getTime() 4 Instant.now().toEpochMilli() 5 LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli() //計算兩個日期的間隔 LocalDate d1 = LocalDate.now(); LocalDate d2 = d1.plusDays(2); Period period = Period.between(d1, d2); System.out.println(period.getDays()); //計算兩個時間的間隔 LocalDateTime dt1 = LocalDateTime.now(); LocalDateTime dt2 = dt1.plusSeconds(60); Duration duration = Duration.between(dt1, dt2); System.out.println(duration.getSeconds()); // 比較時間 date1.compareTo(date2),返回值 -1 表示前一個時間比後一個時間小,0 表示兩個時間相等,1 表示前一個時間大於後一個時間。