Android Java 判断日期是昨天今天明天
超级简单的Android 判断日期是昨天,今天,明天
看了很多实现方式,但是都有坑,比如闰年,跨月(月底,月初)都有问题,本文通过获取年月日,取时间差来判读的,超级简单。
一. 显示日期格式
-
今天:
- 2019-06-20 今天
-
明天
- 2019-06-20 明天
-
昨天
- 2019-06-20 昨天
-
不在显示范围
-
- 2019-06-20 周三
-
二. 具体实现获取今天,明天,昨天,周几
代码主要通过kotlin 实现,原理
通过 SimpleDateFormat 获取今天和目标时间的年,月,日。这样可以去除时,分,秒,毫秒,可以避免计算闰年,跨月的问题;然后两者相减,获取相差的天数,来判断今天,明天,昨天
val DAY = 24 * 60 * 60 * 1000L
/**
* (昨天、今天,明天,周几)
*/
fun getDayWeek(time: Long?): String {
time?.let {
var fomrat = SimpleDateFormat("yyyy-MM-dd")
var t1 = fomrat.format(Date(System.currentTimeMillis()))
var t2 = fomrat.format(Date(time))
val today = fomrat.parse(t1).time
val target = fomrat.parse(t2).time
var d = today - target
// 只获取周几,和哪一天
//return when (d) {
// 2019-06-20 周几/哪一天
return "$t2 " + when (d) {
0L -> {
"今天"
}
DAY -> {
"昨天"
}
-DAY -> {
"明天"
}
else -> {
val calendar = Calendar.getInstance()
calendar.time = Date(time)
getWeek(calendar.get(Calendar.DAY_OF_WEEK))
}
}
}
return ""
}
获得周几
fun getWeek(week: Int): String {
var w = ""
when (week) {
Calendar.SUNDAY -> {
w = "周日"
}
Calendar.MONDAY -> {
w = "周一"
}
Calendar.TUESDAY -> {
w = "周二"
}
Calendar.WEDNESDAY -> {
w = "周三"
}
Calendar.THURSDAY -> {
w = "周四"
}
Calendar.FRIDAY -> {
w = "周五"
}
Calendar.SATURDAY -> {
w = "周六"
}
}
return w
}