Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีดึงวันที่และเวลาปัจจุบันใน Java


มีหลายวิธีดึงวันที่และเวลาปัจจุบันใน 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 ZoneThread-Safeคำแนะนำ
new Date()DateSystem defaultไม่Legacy
LocalDateTime.now()LocalDateTimeSystem defaultใช่แนะนำ #1 สำหรับ local date-time
Calendar.getInstance()CalendarSystem defaultไม่Legacy
Clock.systemUTC().instant()InstantUTCใช่สำหรับ UTC timestamp
Instant.now()InstantUTCใช่ง่ายที่สุดสำหรับ epoch time
LocalDate.now()LocalDateSystem defaultใช่เฉพาะวันที่ (ไม่มีเวลา)
LocalTime.now()LocalTimeSystem defaultใช่เฉพาะเวลา (ไม่มีวันที่)

Best Practice

  • ใช้ LocalDateTime.now() สำหรับวันที่-เวลาท้องถิ่น
  • ใช้ Instant.now() สำหรับ timestamp แบบ UTC (logging, database)
  • ใช้ Clock เมื่อต้องการควบคุม time source (testing, time zones)
  • หลีกเลี่ยง Date, Calendar ในโค้ดใหม่