为什么 Calendar.getDisplayName 总是 return 在给定毫秒数的情况下是一周中的同一天?
Why does Calendar.getDisplayName always return the same day of week when given milliseconds?
我正在尝试创建一个扩展方法来确定一周内的日期,给定一个特定的 Long 值,以便 return 是星期一、星期二等。
fun Long.convertFromLongToDayOfWeek(): String {
val calendar = Calendar.getInstance()
calendar.timeInMillis = this
return calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault()) ?: ""
}
但是,无论我传递给日历实例的值是什么,它总是 return 是“星期一”。
我已经编写了一些带有 Long 值的单元测试(我从 API 收到)并且它们都是 return 星期一。要测试的值包括以下内容:
- 1601542800
- 1601715600
- 1601629200
这段代码是完整的,包含到这里,下面的单元测试只是为了简化调试:
@Test
fun testExample1() {
val value: Long = 1601542800
val result = value.convertFromLongToDayOfWeek()
Assert.assertEquals("Monday", result)
}
@Test
fun testExample2() {
val value: Long = 1601715600
val result = value.convertFromLongToDayOfWeek()
Assert.assertEquals("Monday", result)
}
这两个测试都通过了,但是这两个 Long 值都不代表星期一,我做错了什么?
那些都是星期一!它们实际上都是同一个星期一,一天有 86,400,000 毫秒,而且这些值相差只有几百秒
如果您从 API 获取以秒为单位的时间戳,则需要将它们乘以 1000 以获得毫秒(这是日历 setter 所采用的)
我正在尝试创建一个扩展方法来确定一周内的日期,给定一个特定的 Long 值,以便 return 是星期一、星期二等。
fun Long.convertFromLongToDayOfWeek(): String {
val calendar = Calendar.getInstance()
calendar.timeInMillis = this
return calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault()) ?: ""
}
但是,无论我传递给日历实例的值是什么,它总是 return 是“星期一”。
我已经编写了一些带有 Long 值的单元测试(我从 API 收到)并且它们都是 return 星期一。要测试的值包括以下内容:
- 1601542800
- 1601715600
- 1601629200
这段代码是完整的,包含到这里,下面的单元测试只是为了简化调试:
@Test
fun testExample1() {
val value: Long = 1601542800
val result = value.convertFromLongToDayOfWeek()
Assert.assertEquals("Monday", result)
}
@Test
fun testExample2() {
val value: Long = 1601715600
val result = value.convertFromLongToDayOfWeek()
Assert.assertEquals("Monday", result)
}
这两个测试都通过了,但是这两个 Long 值都不代表星期一,我做错了什么?
那些都是星期一!它们实际上都是同一个星期一,一天有 86,400,000 毫秒,而且这些值相差只有几百秒
如果您从 API 获取以秒为单位的时间戳,则需要将它们乘以 1000 以获得毫秒(这是日历 setter 所采用的)