1. LocalDateTimeชั้นเรียน

คลาสLocalDateTimeรวมความสามารถของ คลาส LocalDateและLocalTime: มันเก็บทั้งวันที่และเวลา ออบเจกต์ของมันยังเปลี่ยนรูปแบบไม่ได้ และวิธีการของมันก็คล้ายกับคลาสLocalDateและLocalTimeคลาส

รับวันที่และเวลาปัจจุบัน

ทุกอย่างเป็นไปตามที่คุณคาดหวัง: เราใช้now()วิธีการ ตัวอย่าง:

รหัส เอาต์พุตคอนโซล
LocalDateTime time = LocalDateTime.now();
System.out.println("Now = " + time);

Now = 2019-02-22T09:49:19.275039200

เมื่อแสดงบนหน้าจอ วันที่และเวลาจะถูกคั่นด้วยตัวTอักษร

รับวันที่และเวลาที่เฉพาะเจาะจง

ไม่น่าแปลกใจเลยที่ทุกอย่างคล้ายกับLocalDateand LocalTimeคลาส — เราใช้of()วิธีการ:

... = LocalDateTime.of(year, month, day, hours, minutes, seconds);

ประการแรก มีพารามิเตอร์ที่ระบุวันที่ในรูปแบบเดียวกับในLocalDateคลาส จากนั้นมีพารามิเตอร์ที่ระบุเวลาในรูปแบบเดียวกับในLocalTimeชั้นเรียน รายการรูปแบบทั้งหมดของof()วิธีการระบุไว้ด้านล่าง:

วิธีการ
of (int year, int month, int day, int hour, int minute)
of (int year, int month, int day, int hour, int minute, int second)
of (int year, int month, int day, int hour, int minute, int second, int nano)
of (int year, Month month, int day, int hour, int minute)
of (int year, Month month, int day, int hour, int minute, int second)
of (int year, Month month, int day, int hour, int minute, int second, int nano)
of (LocalDate date, LocalTime time)

คุณสามารถตั้งค่าวันที่โดยตรงหรือตั้งค่าทางอ้อมผ่านLocalDateและLocalTimeวัตถุ:

รหัส
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime current = LocalDateTime.of(date, time);
System.out.println("Now = " + current);

LocalDateTime date = LocalDateTime.of(2019, Month.MAY, 15, 12, 15, 00);
System.out.println("Now = " + date);
เอาต์พุตคอนโซล
Now = 2019-02-22T10:05:38.465675100
Now = 2019-05-15T12:15

ชั้นLocalDateTimeเรียนมีวิธีการรับองค์ประกอบของวันที่และ/หรือเวลา พวกเขาสะท้อนวิธีการของLocalDateและLocalTimeคลาส อย่างแน่นอน เราจะไม่ทำซ้ำที่นี่



2. Instantชั้นเรียน

ผู้สร้างของ Java ยังไม่ลืมวิธีการโรงเรียนเก่า

Date Time API รวมถึงคลาสแบบทันทีสำหรับการทำงานกับเวลาสำหรับกระบวนการที่เกิดขึ้นในคอมพิวเตอร์ แทนที่จะเป็นชั่วโมง นาที และวินาที จะจัดการกับวินาที มิลลิวินาที และนาโนวินาที

คลาสนี้มีสองฟิลด์ที่แสดงถึง:

  • จำนวนวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม พ.ศ. 2513
  • จำนวนนาโนวินาที

ชั้นเรียนนี้สร้างขึ้นสำหรับนักพัฒนาหรือไม่ ใช่. นั่นเป็นเหตุผลที่คำนวณเวลาใน Unix-time ซึ่งเริ่มตั้งแต่ต้นปี 1970

อาจกล่าวได้ว่าInstantคลาสนั้นเป็นเวอร์ชันที่เรียบง่ายของDateคลาส โดยคงไว้ซึ่งสิ่งที่โปรแกรมเมอร์ต้องการเท่านั้น

คุณสามารถรับInstantวัตถุด้วยวิธีเดียวกับLocalTimeวัตถุ:

Instant timestamp = Instant.now();

timestampตัวแปร อยู่ที่ไหนInstantและเป็นการเรียกเมธอดแบบสแตติกของคลาสInstant.now()now()Instant

ตัวอย่าง:

รหัส เอาต์พุตคอนโซล
Instant timestamp = Instant.now();
System.out.println(timestamp);

2019-02-22T08:42:42.234945300Z

คุณยังสามารถสร้างวัตถุใหม่โดยใช้รูปแบบต่างๆ ของof()วิธีการโดยผ่านช่วงเวลาที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970:

ofEpochMilli(long milliseconds)
คุณต้องผ่านจำนวนมิลลิวินาที
ofEpochSecond(long seconds)
คุณต้องผ่านจำนวนวินาที
ofEpochSecond(long seconds, long nanos)
คุณต้องผ่านวินาทีและนาโนวินาที

วิธีการที่มีอยู่ในInstantวัตถุ

คลาส Instant มีสองวิธีที่ส่งคืนค่าของฟิลด์:

long getEpochSecond()
จำนวนวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม พ.ศ. 2513
int getNano()
นาโนวินาที
long toEpochMilli()
จำนวนมิลลิวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970

นอกจากนี้ยังมีวิธีการสร้างInstantวัตถุใหม่ตามวัตถุที่มีอยู่:

Instant plusSeconds(long)
เพิ่มวินาทีในเวลาปัจจุบัน
Instant plusMillis(long)
เพิ่มมิลลิวินาที
Instant plusNanos(long)
เพิ่มนาโนวินาที
Instant minusSeconds(long)
ลบวินาที
Instant minusMillis(long)
ลบมิลลิวินาที
Instant minusNanos(long)
ลบนาโนวินาที

ตัวอย่าง:

รหัส เอาต์พุตคอนโซล
Instant timestamp = Instant.now();
System.out.println(timestamp);

long n = timestamp.toEpochMilli();
Instant time = Instant.ofEpochMilli(n);
System.out.println(time);

2019-02-22T09:01:20.535344Z



2019-02-22T09:01:20.535Z