gpt4 book ai didi

java - 从输入 IST 日期和时间获取加拿大/东部偏移量

转载 作者:行者123 更新时间:2023-12-01 18:12:15 25 4
gpt4 key购买 nike

我想从 IST 输入日期获取加拿大/东部偏移值

例如,如果我输入 2016-03-10 10:01 那么系统返回正确的偏移量为 -05:00 加拿大/东部

但是当我输入 2020-05-28 10:00 时,我想要的偏移量是 -04:00 加拿大/东部

提前谢谢

 public class TimeZoneConversation {

private static final String DATE_FORMAT = "yyyy-M-dd HH:mm";
static ZoneId istZoneId = ZoneId.of("Asia/Kolkata");
static ZoneId etZoneId = ZoneId.of("Canada/Eastern");

public static void main(String[] args) {
String dateInString = "2020-02-28 10:00";
LocalDateTime currentDateTime = LocalDateTime.parse(dateInString, DateTimeFormatter.ofPattern(DATE_FORMAT));
ZonedDateTime currentISTime = currentDateTime.atZone(istZoneId); //India Time
ZonedDateTime currentETime = currentISTime.withZoneSameInstant(etZoneId); //EST Time

System.out.println(currentISTime.toLocalDate() + " " + currentISTime.toLocalTime() + " IST");
System.out.println(currentETime.toLocalDate() + " " + currentETime.toLocalTime() + " EST/Canada");

Instant instant = Instant.now(); // Capture current moment in UTC.

ZonedDateTime canadaTime = instant.atZone(etZoneId);

System.out.println("Offset is " + canadaTime.getOffset() + " " + etZoneId);


}
}

//上述程序的输出

2020-02-28 10:00IST

2020-02-27 23:30 美国东部时间/加拿大

偏移量为 -05:00 加拿大/东部

最佳答案

我认为您不应该从 Instant 对象中检索偏移量。正确的方法应该是从 ZonedDateTime 检索 offset。下面是对 InstantLocalDateTimeZonedDateTime 的很好的解释:What's the difference between Instant and LocalDateTime?

解决您问题的有效解决方案:

// ...
LocalDateTime currentDateTime = LocalDateTime.parse(dateInString, DateTimeFormatter.ofPattern(DATE_FORMAT));

ZonedDateTime currentISTime = currentDateTime.atZone(istZoneId); //India Time
ZonedDateTime currentETime = currentISTime.withZoneSameInstant(etZoneId); //EST Time

System.out.println(currentISTime.toLocalDate() + " " + currentISTime.toLocalTime() + " IST");
System.out.println(currentETime.toLocalDate() + " " + currentETime.toLocalTime() + " EST/Canada");

// apply getOffset() on ZonedDateTime, not on Instant
System.out.println("Offset is " + currentETime.getOffset() + " " + etZoneId);
  • 2016-03-10 10:01 的输出偏移量为 -05:00 加拿大/东部
  • 2020-05-28 10:00 的输出偏移量为 -04:00 加拿大/东部

关于java - 从输入 IST 日期和时间获取加拿大/东部偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60446811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com