I want to convert a given date time (which is a utc date time) to the corresponding date time in CET with a proper mapping of the european summer/winter time switch (daylight saving time). I managed to to the opposite (CET to UTC) using java.time:
public static LocalDateTime cetToUtc(LocalDateTime timeInCet) {
ZonedDateTime cetTimeZoned = ZonedDateTime.of(timeInCet, ZoneId.of("CET"));
return cetTimeZoned.withZoneSameInstant(ZoneOffset.UTC).toLocalDateTime();
}
Run Code Online (Sandbox Code Playgroud)
But I fail to go the opposite way:
public static LocalDateTime utcToCet(LocalDateTime timeInUtc) {
ZonedDateTime cetTimeZoned = ZonedDateTime.of(timeInUtc,ZoneId.of("UTC"));
return cetTimeZoned.withZoneSameInstant(ZoneOffset.of(???)).toLocalDateTime(); // what to put here?
}
Run Code Online (Sandbox Code Playgroud)
How can I do that?
只需使用ZoneId.of("CET")
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
public class Main {
public static void main(String args[])
{
LocalDateTime date = LocalDateTime.now(ZoneId.of("CET"));
System.out.println(date);
LocalDateTime utcdate = cetToUtc(date);
System.out.println(utcdate);
LocalDateTime cetdate = utcToCet(utcdate);
System.out.println(cetdate);
}
public static LocalDateTime cetToUtc(LocalDateTime timeInCet) {
ZonedDateTime cetTimeZoned = ZonedDateTime.of(timeInCet, ZoneId.of("CET"));
return cetTimeZoned.withZoneSameInstant(ZoneOffset.UTC).toLocalDateTime();
}
public static LocalDateTime utcToCet(LocalDateTime timeInUtc) {
ZonedDateTime utcTimeZoned = ZonedDateTime.of(timeInUtc,ZoneId.of("UTC"));
return utcTimeZoned.withZoneSameInstant(ZoneId.of("CET")).toLocalDateTime();
}
}
Run Code Online (Sandbox Code Playgroud)