紀錄下 Java 的
OffsetDateTime 和 Calendar 的互相轉換
import java.text.SimpleDateFormat; import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; public class DateTimeFormatterTest { public static void main(String[] args) { String timeStr = "2023-01-01T00:00:00+00:00"; OffsetDateTime offsetDateTime = OffsetDateTime.parse(timeStr); //convert OffsetDateTime to Calendar Calendar calendar = Calendar.getInstance(); calendar.setTime(Date.from(offsetDateTime.toInstant())); //convert Calendar to OffsetDateTime //atOffset() 設多少不重要,因為都可以再用 DateTimeFormatter 顯示其他時區的日期文字 OffsetDateTime offsetDateTime2 = calendar.getTime() .toInstant() .atOffset(ZoneOffset.of("+0800")); //print date format string DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ") .withZone(ZoneId.of("UTC+0300")); System.out.println(dtf.format(offsetDateTime2)); //2023-01-01T03:00:00+0300 } }