มีหลายวิธีดึงวันที่และเวลาปัจจุบันใน Java
วิธีที่ 1: ใช้ java.util.Date Constructor (Legacy)
import java.util.Date;
public class CreateDate {
public static void main(String args[]) {
Date date = new Date();
System.out.print(date);
}
}
ผลลัพธ์
Thu Nov 05 20:04:57 IST 2020
วิธีที่ 2: ใช้ LocalDateTime.now() (Java 8+) - แนะนำ
import java.time.LocalDateTime;
public class CreateDateTime {
public static void main(String args[]) {
LocalDateTime date = LocalDateTime.now();
System.out.println("Current Date and Time: " + date);
}
}
ผลลัพธ์
Current Date and Time: 2020-11-05T21:49:11.507
วิธีที่ 3: ใช้ Calendar.getInstance() (Legacy)
import java.util.Calendar;
import java.util.Date;
public class CreateDateTime {
public static void main(String[] args) {
Calendar obj = Calendar.getInstance();
Date date = obj.getTime();
System.out.println("Current Date and time: " + date);
}
}
ผลลัพธ์
Current Date and time: Thu Nov 05 21:46:19 IST 2020
วิธีที่ 4: ใช้ java.time.Clock (Java 8+)
import java.time.Clock;
public class CreateDateTime {
public static void main(String args[]) {
Clock obj = Clock.systemUTC();
System.out.println("Current date time: " + obj.instant());
}
}
ผลลัพธ์
Current date time: 2020-11-05T16:33:06.155Z
วิธีที่ 5: ใช้ Instant.now() (Java 8+) - สำหรับ UTC Timestamp
import java.time.Instant;
public class Test {
public static void main(String args[]) {
Instant now = Instant.now();
System.out.println("UTC: " + now);
System.out.println("Millis: " + now.toEpochMilli());
}
}
ตารางเปรียบเทียบและคำแนะนำ
| วิธี | คืนค่า | Time Zone | Thread-Safe | คำแนะนำ |
|---|---|---|---|---|
| new Date() | Date | System default | ไม่ | Legacy |
| LocalDateTime.now() | LocalDateTime | System default | ใช่ | แนะนำ #1 สำหรับ local date-time |
| Calendar.getInstance() | Calendar | System default | ไม่ | Legacy |
| Clock.systemUTC().instant() | Instant | UTC | ใช่ | สำหรับ UTC timestamp |
| Instant.now() | Instant | UTC | ใช่ | ง่ายที่สุดสำหรับ epoch time |
| LocalDate.now() | LocalDate | System default | ใช่ | เฉพาะวันที่ (ไม่มีเวลา) |
| LocalTime.now() | LocalTime | System default | ใช่ | เฉพาะเวลา (ไม่มีวันที่) |
Best Practice
- ใช้ LocalDateTime.now() สำหรับวันที่-เวลาท้องถิ่น
- ใช้ Instant.now() สำหรับ timestamp แบบ UTC (logging, database)
- ใช้ Clock เมื่อต้องการควบคุม time source (testing, time zones)
- หลีกเลี่ยง Date, Calendar ในโค้ดใหม่