package com.test.date; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; /** * @author ygr * @description ZonedDateTime练习 * @date 2021/10/28 */ public class ZonedDateTimeTest { public static void main(String[] args) { //设置北京时间:2019-09-15 13:00:00 LocalDateTime departureAtBeijing = LocalDateTime.of(2019, 9, 15, 13, 0, 0); //飞行所需时间:13小时20分钟 int hours = 13; int minutes = 20; LocalDateTime arrivalAtNewYork = calculateArrivalAtNY(departureAtBeijing, hours, minutes); System.out.println(departureAtBeijing + " -> " + arrivalAtNewYork); // test: if (!LocalDateTime.of(2019, 10, 15, 14, 20, 0) .equals(calculateArrivalAtNY(LocalDateTime.of(2019, 10, 15, 13, 0, 0), 13, 20))) { System.err.println("测试失败!"); } else if (!LocalDateTime.of(2019, 11, 15, 13, 20, 0) .equals(calculateArrivalAtNY(LocalDateTime.of(2019, 11, 15, 13, 0, 0), 13, 20))) { System.err.println("测试失败!"); } } /** * 北京时间转为纽约时间 * * @return java.time.LocalDateTime * @params departureAtBeijing * @params hours * @params minutes */ private static LocalDateTime calculateArrivalAtNY(LocalDateTime departureAtBeijing, int hours, int minutes) { //到达纽约时的北京时间(中国时区) ZonedDateTime bjZonedDateTime = departureAtBeijing.plusHours(hours).plusMinutes(minutes).atZone(ZoneId.systemDefault()); //中国时区北京时间转为美国东部时区纽约时间 ZonedDateTime nyZonedDateTime = bjZonedDateTime.withZoneSameInstant(ZoneId.of("America/New_York")); return nyZonedDateTime.toLocalDateTime(); } }
Sign in to make a reply
云外方天