1. 程式人生 > 其它 >【當年筆記】日期和時間操作

【當年筆記】日期和時間操作

一、獲取日期並格式化

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 表示前一個時間大於後一個時間。