Hiểu về các class date-time trong Java

Kể từ Java8, các class liên quan đến việc xử lý date-time đã thống nhất lại và dễ hiểu hơn trước. Dưới đây là 1 số note cần thiết để cho người học mới về java có thể nắm bắt.

How can I get the current date and time in UTC or GMT in Java? - Stack  Overflow
copy image from https://stackoverflow.com/questions/308683/how-can-i-get-the-current-date-and-time-in-utc-or-gmt-in-java

I. Trước java8

Mọi người hay dùng

java.util.Date
lib org.joda.time

II. Kể từ Java8

classGoalExample
LocalTimetime local12:03:04.912128700
LocalDatedate local2021-05-24
LocalDateTimedate and time local 2021-05-24T12:03:04.913126
ZonedDateTimedata and time with timezone2021-05-24T12:03:04.913126+07:00[Asia/Bangkok]
Instantright now on the time-line at UTC+02021-05-24T05:03:04.930661400Z
OffsetDateTimea date-time with an offset2021-05-24T12:03:04.935684200+07:00
Periodbetween datePeriod.ofMonths(1);
//P1M
Durationbetween timeDuration.ofHours(2);
//PT2H

Phần mà hầu hết mọi người chưa rõ nhất là về các thuật ngữ của timezone.

  • GMT (Greenwich Mean Time) là 1 time zone cụ thể và nó là time zone 0, đi qua châu Âu, còn gọi lại UTC +0
  • UTC (Coordinated Universal Time) là 1 chuẩn về time zone, tiếng anh là time zone standard. Note: méo hiểu vì sao Coordinated Universal Time lại viết tắt là UTC. @@

Note khác:

3 class dưới đây đều chứa thông tin về thời điểm hiện tại có độ chính xác là nanosecond.

java.time.Instant
java.time.OffsetDateTime
java.time.ZonedDateTime

Tuy nhiên, có sự khác nhau giữa 3 thằng này.

  • Instant: là dạng đơn giản nhất, chỉ thể hiện thời điểm hiện tại
    2021-05-24T05:03:04.930661400Z
  • OffsetDateTime: sẽ thêm cả thông số offset (ví dụ: UTC+07)
    2021-05-24T12:03:04.935684200+07:00
  • ZonedDateTime: sẽ thêm cả thông số về zone
    2021-05-24T12:03:04.913126+07:00[Asia/Bangkok]

III. Daylight Savings Time

Một vài nước có cái này, đặc biệt là nước Mỹ. Đại ý là sửa thời gian khoảng 1h để mùa hè có thời gian sử dụng ánh mặt trời hợp lý hơn. Ở Mỹ, họ sẽ vặn nhanh 1h vào tháng 3 và sửa lại vào tháng 11.

Daylight Savings Time đã được tính toán trong các thư viện của java.

IV. Tổng kết

Đó là tổng quan về date-time và cách java làm việc với date-time. Nếu bạn thấy có ích cho bạn, đừng ngại ngần cho 1 like và share bài viết cho người khác. Thanks hehe

+1

Leave a Reply

Your email address will not be published. Required fields are marked *