gpt4 book ai didi

java - 检查本地时间与另一个时区的给定时间

转载 作者:行者123 更新时间:2023-12-01 19:28:31 26 4
gpt4 key购买 nike

我在某些逻辑上遇到问题,无法根据另一个时区的给定时间检查本地系统时间。基本上,我需要做的就是获取联系人列表中给我们的预定通话时间和特定时区,并检查系统时间(始终为中部时间)是否等于或晚于给定的预定通话时间时区。

因此,时间戳采用以下格式 06-03-2020 19:00:10,并且还会有一个时区,例如加拿大/纽芬兰。我觉得这应该是一个简单的问题,但我很难让它发挥作用。以下是现在的方法:

private boolean restrictTimeCheck1(String schedCallTime, String tz) throws Exception {
System.out.println(String.valueOf(Util.ts()) + ">>> Entering restrictTimeCheck1");
boolean canCall = false;
Date now = new Date();
LocalDateTime ldt = LocalDateTime.ofInstant(now.toInstant(), ZoneId.systemDefault());
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date schedDate = sdf.parse(schedCallTime );
LocalDateTime schedTime = LocalDateTime.ofInstant(schedDate.toInstant(), ZoneId.of(tz));
ZonedDateTime zonedSchedTime = schedTime.atZone(ZoneId.of(tz));
if (ldt.isAfter(zonedSchedTime.toLocalDateTime())) {
canCall = true;
}
System.out.println(String.valueOf(Util.ts()) + "<<< Exiting restrictTimeCheck1: " + canCall);
return canCall;
}

非常感谢任何指点。预先感谢您。

最佳答案

这相当简单:

ZonedDateTime scheduledCallTime = LocalDateTime
.parse("06-03-2020 19:00:10", DateTimeFormatter.ofPattern("dd-MM-uuuu HH:mm:ss"))
.atZone(ZoneId.of("Canada/Newfoundland"));

ZonedDateTime localSystemTime = ZonedDateTime.now();

System.out.println("Scheduled Call Time: " + scheduledCallTime);
System.out.println("Local System Time: " + localSystemTime);
System.out.println("You're late: " + localSystemTime.isAfter(scheduledCallTime));

输出

Scheduled Call Time: 2020-03-06T19:00:10-03:30[Canada/Newfoundland]
Local System Time: 2020-03-08T15:37:00.836235400-04:00[America/New_York]
You're late: true

关于java - 检查本地时间与另一个时区的给定时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60591187/

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