添加一天时,日历会给出错误的时间戳

时间:2018-05-24 10:49:08

标签: android calendar android-calendar

我想在日历日期添加一天,但输出错误。 我正在使用下面的代码。

var cal2= Calendar.getInstance()
cal2!!.timeInMillis=cal.timeInMillis
Log.e("Time1",""+cal.timeInMillis);
cal2.add(Calendar.DATE, 1)
Log.e("Time2",""+cal2.timeInMillis);
  

时间1:1526478465(2018年5月16日星期三19:17:45)

     

时间1:1612878465(2021年2月9日星期二19:17:45)

2 个答案:

答案 0 :(得分:0)

假设您的cal.timeInMillis具有适当的价值(比如今天的日期),您的代码可以正常运行:

var cal = Calendar.getInstance() <-- Assumption
var cal2 = Calendar.getInstance()
cal2!!.timeInMillis=cal.timeInMillis
println("Time1: "+cal.timeInMillis);
cal2.add(Calendar.DATE, 1)
println("Time2: "+cal2.timeInMillis); 

在代码上运行会得到以下输出:

Time1: 1527159971747 (Thursday, May 24, 2018 11:06:11.747 AM)
Time2: 1527246371747 (Friday, May 25, 2018 11:06:11.747 AM)

答案 1 :(得分:0)

自从纪元以来,你在某种程度上混淆了毫秒。 1 526 478 465秒。如果你将它们视为毫秒,那么你将获得1970年1月18日格林威治标准时间4月1日18:18。如果你加1天,你得到你提到的下一个值(我得到1 612 878 000,它接近)。当您将1 612 878 465解释为秒时,您将获得UTC时间2021年2月9日1:47:45。这与你提到的日期时间相同,2021年2月9日星期二19:17:45,如果我假设你的偏移+05:30(如亚洲/加尔各答或亚洲/科伦坡时区)。

由于一秒钟内有1000毫秒,您的混淆导致您将1000天添加到您的日期而不是1天。

提示:10位数值通常是seoncds。 13位数值通常为毫秒。