【发布时间】:2018-11-26 14:47:12
【问题描述】:
所以我需要获取本周星期一的毫秒时间和本周星期日的毫秒时间,并且下面的代码可以正常工作,直到我在模拟器上安装应用程序,如果我将时间设置为星期日,它会返回 Jun 18 - Jun 24 ,但在三星 Galaxy s5 上返回 Jun 11 - Jun 17 <- this is how it should show 我做错了吗?
getMondayTime 方法返回星期一的毫秒数
private fun getMondayTime(): Long{
val calendar = Calendar.getInstance()
calendar.timeInMillis = System.currentTimeMillis()
calendar.firstDayOfWeek = Calendar.MONDAY
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)
calendar.set(Calendar.HOUR_OF_DAY, 0)
calendar.set(Calendar.MINUTE, 0)
calendar.set(Calendar.SECOND, 0)
calendar.set(Calendar.MILLISECOND, 0)
return calendar.timeInMillis
}
getSundayTime 以毫秒为单位返回星期日的时间
private fun getSundayTime(): Long {
val calendar = Calendar.getInstance()
calendar.timeInMillis = System.currentTimeMillis()
calendar.firstDayOfWeek = Calendar.MONDAY
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY)
calendar.set(Calendar.HOUR_OF_DAY, 22)
calendar.set(Calendar.MINUTE, 0)
calendar.set(Calendar.SECOND, 0)
calendar.set(Calendar.MILLISECOND, 0)
return calendar.timeInMillis
}
我把所有的时间都放在了地方
fun generateWeek(): Week{
val format = SimpleDateFormat("MMM d", Locale.ENGLISH)
val mondayTime = getMondayTime()
val sundayTime = getSundayTime()
val label = "${format.format(mondayTime)} - ${format.format(sundayTime)}"
return Week(label, mondayTime, sundayTime)
}
【问题讨论】:
-
时区问题?如果您在周日(下午晚些时候或晚上?)在使用时区已经是周一的模拟器上运行代码,我想您会得到错误的观察周。
-
考虑扔掉
Calendar和SimpleDateFormat的课程。它们早已过时且设计不佳,SimpleDateFormat特别是出了名的麻烦。相反,您可以将 ThreeTenABP 添加到您的 Android 项目中,以便使用现代 Java 日期和时间 APIjava.time。使用起来感觉好多了。
标签: android calendar android-calendar dayofweek java.util.calendar