gpt4 book ai didi

java - Time.toMillis(boolean) 不考虑时区

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:08 24 4
gpt4 key购买 nike

考虑以下代码:

Time time1 = new Time("America/Los_Angeles"); // UTC -8
Time time2 = new Time("Pacific/Kiritimati"); // UTC +14

time1.setToNow();
time2.setToNow();

Log.d("timetest", "America/Los_Angeles: " + time1.toMillis(false));
Log.d("timetest", "Pacific/Kiritimati : " + time2.toMillis(false));

这是获取输出的日志:

08-03 07:27:50.687: D/timetest(28411): America/Los_Angeles: 1375540070000
08-03 07:27:50.687: D/timetest(28411): Pacific/Kiritimati : 1375540070000

如您所见,毫秒值是相同的,尽管由于时区的原因它们相隔整整 22 小时。这让我相信 Time.toMillis(boolean) 是基于 UTC,而不是 Time 的指定时区。我需要一种方法来根据 Time 的时区获取毫秒数。有什么想法吗?

最佳答案

自纪元 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数在任何地方都是相同的。您目前是在洛杉矶还是在基里蒂马蒂并不重要。


编辑

toMillis 方法将返回自纪元以来的毫秒数。纪元是 1970 年 1 月 1 日 00:00:00 UTC。

这样想。如果 A 出生在洛杉矶,B 出生在 Kiritimati,那么 A 的年龄将为 time1.toMillis(),B 的当前年龄为 time2.toMillis(),对吧?

即使在 UTC 时区,他们出生时是午夜,但在他们各自的时区却不是午夜。您可以从他们的时区 UTC-8 和 UTC+14 看出这一点。

现在如果 time1.toMillis() != time2.toMillis() 这将意味着两个人中的一个年龄较大。这将意味着他的生命多活了几毫秒。当然,事实并非如此,因为正如我们所说,它们是同时出生的。这就是为什么您看到的输出是正确的,我认为您不应该尝试更改它。

关于java - Time.toMillis(boolean) 不考虑时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18033942/

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