java.lang.System.currentTimeMillis():回傳(long值)當前時間與1970年1月1日0時0分0秒之間以毫秒為單位的時間差(時間戳)
java.util.Date
// 1. toString():顯示當前的年、月、日、時、分、秒
// 2. getTime():取得當前Date物件對應的毫秒數(時間戳)
// 3.當前時間Date物件
Date date = new Date();
System.out.println(date.toString()); // Sun Mar 26 21:13:32 GMT+08:00 2023
System.out.println(date.getTime()); // 1679836437117
// 4. 指定毫秒數Date物件
Date date2 = new Date(1679836437117L); // Sun Mar 26 21:13:57 GMT+08:00 2023
// 5. 如何將java.sql.Date, java.util.Date 互轉
// java.sql.Date 轉 java.util.Date(子轉父)
Date date3 = new java.sql.Date(1679836437117L);
System.out.println(date3.toString()); // 2023-03-26
// java.util.Date 轉 java.sql.Date(父轉子)
java.sql.Date date4 = new java.sql.Date(date3.getTime());
System.out.println(date4.toString()); // 2023-03-26
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 格式化:日期 -> 字串
System.out.println(sdf.format(new Date())); // 2023-03-26 21:46:26
// 解析:字串 -> 日期
Date parse = null;
try {
parse = sdf.parse("2023-03-26 21:46:26");
} catch (ParseException e) {
e.printStackTrace();
}
if (parse != null) {
System.out.println(parse.toString()); // Sun Mar 26 21:46:26 GMT+08:00 2023
}
java.util.Calendar(抽象類)
常用方法:
注意:
// Date 偏移量 YEAR從1900開始、月從0開始
Date date = new Date(2023-1900, 3-1, 27);
System.out.println(date);
// 方式一、創建其子類(GregorianCalendar)的物件
// 方式二、調用其靜態方法 getInstance()
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getClass()); // class java.util.GregorianCalendar
// get()
int days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days); // 這個月的第幾天
System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 這個年的第幾天
// add()
calendar.add(Calendar.DAY_OF_YEAR, -3);
days = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println(days); // 這個年的第幾天
// getTime()
Date date = calendar.getTime();
System.out.println(date); // Mon Mar 27 09:42:12 GMT+08:00 2023
// setTime()
Date date1 = new Date();
calendar.setTime(date1);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 這個年的第幾天
// 字串"2020-09-08" 轉換為 java.sql.Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2020-09-08");
java.sql.Date date1 = new java.sql.Date(date.getTime());
System.out.println(date1);// 2020-09-08
@Test
public void LocalDateTest() {
// now() 取得當前日期、時間、日期+時間
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
// of() 設置指定的年、月、時、分、秒。沒有偏移量
LocalDateTime localDateTime1 = localDateTime.of(2023, 3, 27, 10, 13, 0);
System.out.println(localDateTime1);// 2023-03-27T10:13
// getXxx() 取得相關屬性
System.out.println(localDateTime1.getDayOfMonth());
System.out.println(localDateTime1.getDayOfWeek());
System.out.println(localDateTime1.getMonth());
System.out.println(localDateTime1.getMonthValue());
System.out.println(localDateTime1.getMinute());
// LocalDate 不可變性
// withXxx() 設置相關屬性
LocalDate localDate1 = localDate.withDayOfMonth(31);
System.out.println(localDate); // 2023-03-27
System.out.println(localDate1); // 2023-03-31
// LocalDateTime 不可變性
LocalDateTime localDateTime2 = localDateTime.withHour(12);
System.out.println(localDateTime); // 2023-03-27T10:22:58.529
System.out.println(localDateTime2); // 2023-03-27T12:22:58.529
// plusXxx()
LocalDateTime localDateTime3 = localDateTime.plusMonths(3);
System.out.println(localDateTime); // 2023-03-27T10:24:37.844
System.out.println(localDateTime3); // 2023-06-27T10:24:37.844
// minusXxx()
LocalDateTime localDateTime4 = localDateTime.minusDays(6);
System.out.println(localDateTime); // 2023-03-27T10:25:47.916
System.out.println(localDateTime4); // 2023-03-21T10:25:47.916
}
@Test
public void instantTest() {
// now() 取得本初子午線對應的標準時間
Instant now = Instant.now();
// 考慮時區問題 UTC+8 小時
OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime); // 2023-03-27T10:38:16.822+08:00
// 直接指定台灣台北時區
ZonedDateTime zonedDateTime = now.atZone(ZoneId.of("Asia/Taipei"));
System.out.println(zonedDateTime.toLocalDateTime()); // 2023-03-27T10:43:59.249
// toEpochMills():取得自1970年1月1日0時0分0秒(UTC)開始的毫秒數
long milli = now.toEpochMilli();
System.out.println(milli); // 1679885289697
// ofEpochMilli():通過指定的毫秒數,取得Instant實例
Instant instant = Instant.ofEpochMilli(1679885289697L);
OffsetDateTime offsetDateTime1 = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime1); // 2023-03-27T10:48:09.697+08:00
ZonedDateTime zonedDateTime1 = instant.atZone(ZoneId.of("Asia/Taipei"));
System.out.println(zonedDateTime1.toLocalDateTime()); // 2023-03-27T10:48:09.697
}