gpt4 book ai didi

java - 添加毫秒的 Android 日期不在正确的时间

转载 作者:搜寻专家 更新时间:2023-11-01 09:48:49 27 4
gpt4 key购买 nike

我想做的是存储一个日期,用很长的毫秒表示,即当前时间的下一个午夜。所以,在晚上 10:11 发布这个,我想要一个代表明天早上 12:00 的日期。为了这个任务,我写了这行代码(知道一天有86400000毫秒):

long time = System.currentTimeMillis() + (86400000 - (System.currentTimeMillis() % 86400000));

该行旨在计算从上一个午夜算起的额外毫秒数,从一整天中减去它以找到到下一个午夜的时间,然后将其添加到当前时间,以便新值是下一个午夜的值午夜。不管出于什么原因,我用来调试的日期对象在调用 #toString() 方法时会吐出“Wed Apr 20 20:00:00 EDT 2016”。当前时间据说是“2016 年 4 月 19 日星期二 22:08:34 EDT”,同时计算另一个日期。

这意味着毫秒的 long 实际上代表第二天晚上 8:00,而我希望它代表凌晨 12:00。谁能帮我找出逻辑上的缺陷?

我很可能遗漏了一些明显的东西,所以请耐心等待。

注意:我也试过这样计算时间:

long time = System.currentTimeMillis() - (System.currentTimeMillis() % 86400000) + 86400000;

但这导致了相同的 Date 对象。

最佳答案

您忘记调整您的时区。这是实现此目的的简单方法。

TimeZone tz = TimeZone.getDefault();
long time = System.currentTimeMillis() + (86400000 - (System.currentTimeMillis() % 86400000));
time -= tz.getOffset(time);

System.out.println(new Date(time));

关于java - 添加毫秒的 Android 日期不在正确的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732653/

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