gpt4 book ai didi

java - 两次之间的差异始终返回 2 或更大

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

我的应用程序中有 2 个事件。我需要两者之间的时间差,因此我使用这行代码将时间存储在共享首选项中:

public static void PutStatus(Context ctx,boolean stat)
{
if (ctx != null)
{
SharedPreferences shr = ctx.getSharedPreferences("test", Context.MODE_WORLD_READABLE);
shr.edit().putBoolean("SHIFT", stat).commit();
if (stat) shr.edit().putLong("START_TIME", System.currentTimeMillis()).commit();
}



}

然后我使用以下方法计算两个日期和时间之间的差异:

SharedPreferences shr = getApplicationContext().getSharedPreferences("test", Context.MODE_WORLD_READABLE);
long time_stamp = System.currentTimeMillis() - shr.getLong("START_TIME", 0);
Date data = new Date(time_stamp);

分钟显示正常,但时间提前了 2 小时。

为什么它与时区有联系?

最佳答案

使用 Java 获取持续时间的正确方法有点复杂。您可以通过以下方式创建它:

import javax.xml.datatype.Duration;
import javax.xml.datatype.DatatypeFactory
...
Duration d = DatatypeFactory.newInstance().newDuration(time_stamp);
System.out.println(d.getHours() + "h:" + d.getMinutes() + "m: " + d.getSeconds() + "s");

有关文档,请参阅 DurationDatatypeFactory .

关于java - 两次之间的差异始终返回 2 或更大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12776588/

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