gpt4 book ai didi

Java Calendar getTimeInMillis 返回错误的时间

转载 作者:行者123 更新时间:2023-11-29 21:01:28 32 4
gpt4 key购买 nike

我正在使用 Android 的 Java 日历类,但是我遇到了一些意外行为。

当我测试以下代码时,它给出了我想要的结果:

Calendar cal = Calendar.getInstance();
cal.getTimeInMillis() - System.currentTimeMillis(); // returns 0 indicating that they are synced

但是,当我更改 Calendar 实例的值时,它似乎不再为 getTimeMillis 返回正确的值。

例如:

// Current time : 1:56pm

cal.set(Calendar.HOUR, 13);
cal.set(Calendar.MINUTE, 0);

cal.getTimeInMillis(); // returns 1411448454463
System.currentTimeMillis(); // returns 1411407834463

cal.getTimeInMillis() - System.currentTimeMillis(); // returns 40620000

如您所见,cal.getTimeInMillis() 返回一个大于 System.currentTimeMillis() 的数字,即使时间应该更早(1:00pm vs 1:下午 56 点)。

如有任何帮助,我们将不胜感激!

最佳答案

tl;dr

ZonedDateTime.now(               // Capture the current moment…
ZoneId.of( "Africa/Tunis" ) // … as seen through the wall-clock time used by the people of a certain region (time zone).
) // Returns a `ZonedDateTime` object.
.with( // Adjusting…
LocalTime.of( 13 , 0 ) // …by replacing the time-of-day
) // Produces a fresh (second) `ZonedDateTime` object, with values based on the original. Known as Immutable Objects pattern.
.toString()

2018-04-24T13:00+01:00[Africa/Tunis]

java.time

现代方法使用 java.time 类取代了最初与最早版本的 Java bundle 在一起的麻烦的旧日期时间类。

通过某个地区的人们使用的挂钟时间获取当前时刻 (a time zone)。

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

要表示新的所需时间,请使用 LocalTime

LocalTime lt = LocalTime.of( 13 , 0 ) ;  // 1 PM.

将现有的 ZonedDateTime 调整到这个时间,生成一个新的 ZonedDateTime 对象。

ZonedDateTime zdtThirteen = zdt.with( lt ) ;

关于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 对象。使用JDBC driver符合 JDBC 4.2或以后。不需要字符串,不需要 java.sql.* 类。

从哪里获得 java.time 类?

关于Java Calendar getTimeInMillis 返回错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25980330/

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