gpt4 book ai didi

java - 如何将特定时间转换为毫秒

转载 作者:行者123 更新时间:2023-12-02 11:42:16 24 4
gpt4 key购买 nike

如何转换一个特定的小时,例如18:00,到毫秒?

我需要这个,以便如果时间在 12:00 到 18:00 之间,我可以做一些事情,如果时间不在 12:00 到 18:00 之间,我可以做其他事情。

我通过以下方式获取当前时间:

Private long time;
time = System.currentTimeMillis();

但我不知道如何将一小时转换为毫秒。

网上搜了一下好像如果用System.currentTimeMillis()它会给我当前日期和小时的毫秒数,但我需要它每天更新,如下所示:

今天的时间(以毫秒为单位)是这样的:1516994140294 。但这个号码包含这个:Fri Jan 26 2018 19:15:40 。因此,如果我在这一天的 12:00 和 18:00 使用毫秒,这意味着明天它不会按我想要的方式工作。

那么你能帮我提供一个示例或文档吗?一切都可以帮助我:)并提前致谢。

最佳答案

tl;博士

LocalTime.now()                               // Capture current moment. Better to explicitly pass a `ZoneId` object than rely implicitly on the JVM’s current default time zone.
.isBefore( LocalTime.of( 18 , 0 ) ) // Compare the current time-of-day against the limit.

不需要毫秒计数

无需计算毫秒。 Java 有用于这项工作的智能日期时间类,可以在 Java 8 及更高版本中内置的 java.time 包中找到。对于早期的 Android,请参阅下面的最后一个项目符号。

不需要System.currentTimeMillis()。 java.time 类执行相同的工作。

本地时间

要获取当前时间(不带日期和时区),请使用 LocalTime .

确定当前时间需要时区。对于任何给定时刻,一天中的时间因区域而异。如果省略,则隐式应用 JVM 当前的默认时区。最好明确指定您想要的/预期的时区,因为默认时区可能在运行时之前或运行期间的任何时刻发生变化。

指定proper time zone name格式为大洲/地区,如America/Montreal , Africa/Casablanca ,或太平洋/奥克兰。切勿使用 3-4 个字母的缩写,例如 ESTIST,因为它们不是真正的时区,不是标准化的,甚至不是唯一的( !)。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalTime now = LocalTime.now( z ) ;

与方法 isBeforeisAfterequals 进行比较。

询问“等于或晚于中午”的更简短的方式是“不在中午之前”。

boolean isAfternoon = 
( ! now.isBefore( LocalTime.NOON ) )
&&
now.isBefore( LocalTime.of( 18 , 0 ) )
;

如果您担心 Daylight Saving Time( DST) 等异常现象的影响,探索使用 ZonedDateTime 而不仅仅是 LocalTime

<小时/>

关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

Joda-Time项目,现在位于 maintenance mode ,建议迁移到java.time类。

要了解更多信息,请参阅 Oracle Tutorial 。并在 Stack Overflow 上搜索许多示例和解释。规范为JSR 310 .

从哪里获取java.time类?

关于java - 如何将特定时间转换为毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468155/

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