gpt4 book ai didi

java - 在Linux环境中用Java计算直到午夜的分钟数

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:05 25 4
gpt4 key购买 nike

看一下以下命令:

$ sudo ln -fs /usr/share/zoneinfo/US/Pacific localtime
$ date
Mon Oct 13 15:29:02 PDT 2014
$ sudo ln -fs /usr/share/zoneinfo/US/Hawaii localtime
$ date
Mon Oct 13 12:29:20 HST 2014

这一切都很好。现在我有一些用 java 编写的软件,需要知道距离午夜还有多少分钟,以便它可以执行一些维护。

这是我想出的代码:

// Time to perform maintenance
String rawTime = "23:59";
int hours = Integer.parseInt(rawTime.substring(0, 2));
int minutes = Integer.parseInt(rawTime.substring(3, 5));

// Get current Time
Calendar c = Calendar.getInstance();
long now = c.getTimeInMillis();
Date dateNow = new Date(now);
System.out.println(new Date(now));

// Get midnight
c.set(Calendar.HOUR_OF_DAY, hours);
c.set(Calendar.MINUTE, minutes);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date midnight = new Date(c.getTimeInMillis());

// Get Difference
System.out.println(String.format("Calc minutes from %s to %s", dateNow, midnight));
long result = ((midnight.getTime()/60000) - (dateNow.getTime()/60000));
System.out.println((int) result);

Linux 设置为夏威夷时区时的输出:

Calc minutes from Mon Oct 13 15:36:51 PDT 2014 to Mon Oct 13 23:59:00 PDT 2014
Result: 503

如您所见,我没有得到正确的时间...我得到的是 PDT 而不是 HST。我不太关心为什么日期的 toString() 返回 PDT,因为它与时区无关,但我关心应该如何计算它?

让我们从 '11:59' 开始,计算 linux 认为时间到 '11:59' 为止还有多少分钟......我愿意接受一种解决方案,以不同的方式设置 linux 时间。

谢谢!这应该很难...

最佳答案

java.util.Date 和 .Calendar 类是出了名的麻烦。避开他们。使用 Joda-Time或 Java 8 中新的 java.time 包。

在 Joda-Time 和 java.time 中,日期时间对象确实知道自己指定的时区(与 java.util.Date 不同)。

这里是 Joda-Time 2.5 中的一些示例代码。

DateTimeZone timeZoneHawaii = DateTimeZone.forID( "Pacific/Honolulu" );
DateTime now = DateTime.now( timeZoneHawaii );
DateTime dayStart = now.plusDays(1).withTimeAtStartOfDay(); // Usually 00:00:00.000 but not always because of Daylight Saving Time or possibly other anomalies.
int minutesUntilDayStartsInHawaii = Minutes.minutesBetween( now, dayStart ).getMinutes();

关于java - 在Linux环境中用Java计算直到午夜的分钟数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26350096/

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