gpt4 book ai didi

java - 如何在java中找到当前时间和一天中的特定时间之间的差异

转载 作者:行者123 更新时间:2023-11-29 07:46:06 25 4
gpt4 key购买 nike

我想找出纽约时间下一次下午 3 点与当前时间之间的毫秒差。即如果现在是纽约时间下午 5 点。我应该知道现在下午 5 点和纽约时间第二天下午 3 点之间的时差。我怎样才能用 Java 做到这一点?我也很高兴使用 JodaTime,能否请您举个例子,说明如何做到这一点。

请帮忙。

最佳答案

以下是使用最流行的库选择的三种解决方案。它们都遵循相同的模式,只是使用给定库的命名法。

乔达解决方案:

DateTime dt = new DateTime(DateTimeZone.forID("US/Eastern"));
DateTime target = dt
.withHourOfDay(15)
.withMinuteOfHour(0)
.withSecondOfMinute(0)
.withMillisOfSecond(0);

if (target.isBefore(dt)) {
target = target.plusDays(1);
}

System.out.println(target.getMillis() - dt.getMillis());

Java 8 解决方案

爱上了 until() 方法:

ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("US/Eastern"));
ZonedDateTime target2 = zdt
.withHour(15)
.withMinute(0)
.withSecond(0)
.withNano(0);

if (target2.isBefore(zdt)) {
zdt = zdt.plusDays(1);
}

System.out.println(zdt.until(target2, ChronoUnit.MILLIS));

Java <=7 解决方案

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("US/Eastern"));
Calendar target3 = Calendar.getInstance(TimeZone.getTimeZone("US/Eastern"));
target3.set(Calendar.HOUR_OF_DAY, 15);
target3.set(Calendar.MINUTE, 0);
target3.set(Calendar.SECOND, 0);
target3.set(Calendar.MILLISECOND, 0);

if (target3.before(c)) {
target3.add(Calendar.DATE, 1);
}

System.out.println(target3.getTimeInMillis() - c.getTimeInMillis());

关于java - 如何在java中找到当前时间和一天中的特定时间之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25664340/

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