gpt4 book ai didi

java - 计算日变化(以毫秒为单位)

转载 作者:行者123 更新时间:2023-12-02 01:45:54 24 4
gpt4 key购买 nike

这两行计算自 1970 年以来的天数。当我将手机时间设置为 23:55 时,这两行应该返回不同的值,因为 23:55 + 10 分钟是新的一天。但不知何故,两条线返回相同的值。

Log.d("Main", "today " + (int) (System.currentTimeMillis() / TimeUnit.DAYS.toMillis(1) ) );
Log.d("Main", "tomorrow " + (int) ((System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(10)) / TimeUnit.DAYS.toMillis(1) ) );

日志消息:

12-09  17109-17109/com.example..myapplication D/Main: 
today 17874 // 23:55
tomorrow 17874 // 00:05 this line should be 17875, because it's a new day

最佳答案

these two lines should return different values


如果您不对它们应用整数除法,它们就会。

because 23:55 + 10 minutes is a new day


是的,但自 1970 年以来,只多了 10 分钟。

检查此代码,它允许比整数除法更精确的除法:

System.out.println("today " +
(System.currentTimeMillis() * 1.0 / TimeUnit.DAYS.toMillis(1)));
System.out.println("tomorrow " +
((System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(10)) * 1.0 / TimeUnit.DAYS.toMillis(1)));

将打印:

today 17872.55873355324
tomorrow 17872.565677997685

您的代码截断了小数位,并且您认为这两行返回相同的结果。

当然,如果您添加 1 天而不是添加 10 分钟,代码中的结果将是正确的:

System.out.println("today " +
(int) (System.currentTimeMillis() / TimeUnit.DAYS.toMillis(1)));
System.out.println("tomorrow " +
(int) ((System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1)) / TimeUnit.DAYS.toMillis(1)));

将打印:

today 17872
tomorrow 17873

关于java - 计算日变化(以毫秒为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53670328/

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