我编写了两个函数来获取 start time
和 end time
.结束时间始终为当前时间,开始时间始终为当前时间减去 2 秒。
这是功能代码。
private fun getStartDateTime(): String {
val dateFormat = SimpleDateFormat(Constants.SERVER_DATE_FORMAT, Locale.getDefault())
val calendar = Calendar.getInstance()
calendar.add(Calendar.SECOND, -2)
return dateFormat.format(calendar.time)
}
private fun getEndDateTime(): String {
val dateFormat = SimpleDateFormat(Constants.SERVER_DATE_FORMAT, Locale.getDefault())
val date = Date()
return dateFormat.format(date)
}
在大多数设备中,它都可以正常工作,但是当我在 中进行测试时一加6 当我调用这个函数时,它开始给我同样的时间。请参阅以下本地数据库表的屏幕截图。问题 :
这些函数每 2 秒调用一次。所以开始时间和结束时间应该是唯一的。为什么我没有得到唯一的
start time
有什么原因吗?和 end time
?编辑
在创建调用的新对象时调用这些函数,例如
val abc = ABC(xxx, xxx, xxx, getStartDateTime(), getEndDateTime())
最佳答案
这是猜测。一些可能的解释包括:
Calendar.getInstance()
的实现和 Date()
在该设备上缓存太多,并从陈旧的缓存中为您提供一个值。 我们没有任何信息可以让我们更接近。正如 chrylis -cautiouslyoptimistic- 在评论中所说的那样,您可以从您的函数中进行一些日志记录,以查看在您的程序运行期间它真正被调用了多少次。此外,1332 个条目与预期数量相比如何?
顺便说一句,如果可以的话,更喜欢使用现代 Java 日期和时间 API java.time,如另一个答案的后半部分所述。如果问题确实是过期缓存,这也很有可能避免该问题。
关于android - val calendar = Calendar.getInstance() 和 val date = Date() 返回不正确的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64096139/