ZonedDateTime trong java

ZonedDateTime được giới thiệu trong java 8 đại diện cho kiểu dữ liệu Date & Time với múi giờ cụ thể. ZonedDateTime lưu các tất cả các trường dữ liệu của date & time đến độ chính xác là nano giây.

Sử dụng ZonedDateTime để giao tiếp với nhau giữa các nhau khác múi giờ. Ví dụ như bạn sẽ chỉ ra thời gian cụ thể tại nơi bạn để hẹn gặp họ.

Note: ZonedDateTime object là immutable.

Khởi tạo ZonedDateTime

Thông thường chúng ta khởi tạo ZonedDateTime object bằng 2 method chính là ZonedDateTime.now()ZonedDateTime.of()

now()

ZonedDateTime now = ZonedDateTime.now();
 
ZonedDateTime now = ZonedDateTime.now( ZoneId.of("GMT+05:30") ); //Time in IST

of()

//1 - All date parts are inplace
ZoneId zoneId = ZoneId.of("UTC+1");
 
ZonedDateTime zonedDateTime1 =
    ZonedDateTime.of(2020, 1, 4, 23, 45, 59, 1234, zoneId);
 
//=========
 
//2 - Using existing local date and time values 
LocalDate localDate = LocalDate.of(2019, 03, 12);
LocalTime localTime = LocalTime.of(12,  44);
ZoneId zoneId = ZoneId.of("GMT+05:30");
 
ZonedDateTime timeStamp = ZonedDateTime.of( localDate, localTime, zoneId );

Convert String sang ZonedDateTime

Trong ZonedDateTime sử dụng method parse() để convert string thành ZonedDateTime object.

//1 - default pattern
String timeStamp = "2019-03-27T10:15:30";
ZonedDateTime localTimeObj = ZonedDateTime.parse(time);
 
//2 - specified pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss a");
String timeStamp1 = "2019-03-27 10:15:30 AM";
ZonedDateTime localTimeObj1 = ZonedDateTime.parse(timeStamp1, formatter);

Convert ZonedDateTime sang String

Sử dụng format() method để convert ZonedDateTime object sang String với định dạng được chỉ định.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss a");

ZonedDateTime now = ZonedDateTime.now();

String dateTimeString = now.format(formatter); // 2020-01-06 23:57:59 PM

Modify ZonedDateTime

ZonedDateTime object cung cấp cho chúng ta các method với tiền tố là plusX() và minusY() để cập nhật gía trị của ZonedDateTime object. 

  • plusYears()
  • plusMonths()
  • plusDays()
  • plusHours()
  • plusMinutes()
  • plusSeconds()
  • plusNanos()
  • minusYears()
  • minusMonths()
  • minusDays()
  • minusHours()
  • minusMinutes()
  • minusSeconds()
  • minusNanos()
ZonedDateTime now = ZonedDateTime.now();
 
//3 hours later
ZonedDateTime zonedDateTime1 = now.plusHours(3);    
 
//3 minutes earliar
ZonedDateTime zonedDateTime2 = now.minusMinutes(3);
 
//Next year same time
ZonedDateTime zonedDateTime2 = now.plusYears(1);
 
//Last year same time
ZonedDateTime zonedDateTime2 = now.minusYears(1);
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x