Java 8 timezone conversions

前端 未结 2 1034
天命终不由人
天命终不由人 2020-11-28 14:50

In Java 8, I want to convert a datetime from UTC to ACST (UTC+9:30).

input -> 2014-09-14T17:00:00+00:00

output-> 2014-09-15 02:30:00

String i         


        
2条回答
  •  一向
    一向 (楼主)
    2020-11-28 15:14

    Try:

    String isoDateTime = "2014-09-14T17:00:00+00:00";
    ZonedDateTime fromIsoDate = ZonedDateTime.parse(isoDateTime);
    ZoneOffset offset = ZoneOffset.of("+09:30");
    ZonedDateTime acst = fromIsoDate.withZoneSameInstant(offset);
    
    System.out.println("Input:  " + fromIsoDate);
    System.out.println("Output: " + acst.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME)); 
    

    Output:

    Input:  2014-09-14T17:00Z
    Output: 2014-09-15T02:30:00+09:30
    

    Using OffsetDateTime

    While it is generally better to use ZonedDateTime as shown above, you can perform the same conversion using OffsetDateTime as follows:

    String isoDateTime = "2014-09-14T17:00:00+00:00";
    OffsetDateTime fromIsoDate = OffsetDateTime.parse(isoDateTime);
    ZoneOffset offset = ZoneOffset.of("+09:30");
    OffsetDateTime acst = fromIsoDate.withOffsetSameInstant(offset);
    

提交回复
热议问题