---
# System prepended metadata

title: '[Java] 日期的各種用法（Date、LocalDate、LocalDateTime）'
tags: [Java 8, Java]

---

# [Java] 日期的各種用法（Date、LocalDate、LocalDateTime）
[TOC]

## 比較日期
- compareTo()
    - 會返回數字 
    - 0為相等, <0為小於右邊, >0為大於右邊

## SimpleDateFormat
- parse
    將 **格式化的字串** 轉換成 **Date值**
- format
    將 **Date值** 轉換成 **格式化的字串**

## LocalDate 轉成 LocalDateTime
當天起始的時間
```=java!
LocalDateTime endDate = LocalDate.parse(
    "2024-09-30", 
    DateTimeFormatter.ofPattern("yyyy-MM-dd"))
	.atStartOfDay();
```

當天最後的時間
```=java!
// 兩種方式皆可，但第一種的語意最清楚
LocalDateTime endDate = LocalDate.parse(
    "2024-09-30", 
    DateTimeFormatter.ofPattern("yyyy-MM-dd"))
	.atTime(LocalTime.MAX);
    
LocalDateTime endDate = LocalTime.MAX.atDate(
    LocalDate.parse("2024-09-30",
    DateTimeFormatter.ofPattern("yyyy-MM-dd")));
```

:::info
`DateTimeFormatter.ofPattern("yyyy-MM-dd")` 也可以換成 `DateTimeFormatter.ISO_LOCAL_DATE`
:::