gpt4 book ai didi

java - 转换后如何修复丢失的日期时间?

转载 作者:太空狗 更新时间:2023-10-29 15:58:49 24 4
gpt4 key购买 nike

我想测试我的 DateUtil 类,但出现错误 - 在将我的 Date 转换为 String 并返回 Date 后,我丢失了大约 900秒。

这是我的代码:

  fun convertStringToDate() {
// here I get current Date
val currentDate = Date() // 1514285741928
// see apiDateFormatter declaration below this code
val dateStr = apiDateFormatter.format(currentDate) // Tue, 26 Dec 2017 12:55:41 GMT+02:00
// see convertStringToDate() method declaration below this code
val convertedDate = DateUtil.convertStringToDate(dateStr) // 1514285741000
assertEquals(currentDate == convertedDate, true)
}

apiDateFormatter

val DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss zzz"
val apiDateFormatter = SimpleDateFormat(DATE_FORMAT, Locale.ENGLISH)

DateUtil.convertStringToDate(dateStr)

fun convertStringToDate(dateStr: String): Date {
return apiDateFormatter.parse(dateStr)
}

currentDateconvertedDate 之间的差异约为 900 秒。

为什么以及如何解决

最佳答案

您拥有的两个 UNIX 纪元时间戳实际上以 毫秒 为单位,而不是秒。这是两个值:

1514285741928 - before
1514285741000 - after

两个时间戳之间的差值,以 928 毫秒为单位。所发生的只是毫秒部分被截断了。当您在此行应用秒级精度日期掩码时发生截断:

val dateStr = apiDateFormatter.format(currentDate)

要解决这个问题,您可以尝试更改您的 SimpleDateFormat 掩码以包括毫秒:

val DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss.SSS zzz"
// ^^^ add this
val apiDateFormatter = SimpleDateFormat(DATE_FORMAT, Locale.ENGLISH)

关于java - 转换后如何修复丢失的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47977580/

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