【发布时间】:2021-04-23 09:46:53
【问题描述】:
我有一个来自字符串响应的时间戳,我正在尝试将其转换为显示时间之前。
但是,我的转换器存在比当前时间晚 1 小时、1 天等的问题...
例如,当我在这里发布问题时,这个给定的时间戳 1610959169 显示 18 hours ago。实际上,我必须在线转换它,结果在19 hours ago 中给出。
请查看下面的转换类代码片段。
object DateTimeConvertUtil {
private val SECOND_MILLIS = 1000
private val MINUTE_MILLIS = 60 * SECOND_MILLIS
private val HOUR_MILLIS = 60 * MINUTE_MILLIS
private val DAY_MILLIS = 24 * HOUR_MILLIS
private val WEEK_MILLIS = 7 * DAY_MILLIS
fun getCreatedTime(givenTime: Long, isShowingWeek: Boolean? = false): String? {
var time = givenTime
if (time < 1000000000000L) {
time *= 1000
}
val now = System.currentTimeMillis()
if (time > now || time <= 0) {
return null
}
val diff = now - time
when {
diff < MINUTE_MILLIS -> return "Just now"
diff < 2 * MINUTE_MILLIS -> return "a minute ago"
diff < 50 * MINUTE_MILLIS -> return "${diff / MINUTE_MILLIS} minutes ago"
diff < 90 * MINUTE_MILLIS -> return "an hour ago"
diff < 24 * HOUR_MILLIS -> return "${diff / HOUR_MILLIS} hours ago"
diff < 48 * HOUR_MILLIS -> return "Yesterday"
diff < 7 * DAY_MILLIS -> return "${diff / DAY_MILLIS} days ago"
else -> {
return if (isShowingWeek!!) {
when {
diff / WEEK_MILLIS <= 1 -> "${diff / WEEK_MILLIS} week ago"
diff / WEEK_MILLIS <= 52 -> "${diff / WEEK_MILLIS} weeks ago"
diff / WEEK_MILLIS <= 104 -> "a year ago"
else -> "2 years ago"
}
} else {
showDate(time.toString())
}
}
}
}
请帮我解决这个问题。谢谢。
【问题讨论】:
-
val date = Date(timeStamp * 1000) val ago = DateUtils.getRelativeTimeSpanString(date.time, System.currentTimeMillis(),DateUtils.MINUTE_IN_MILLIS,DateUtils.FORMAT_ABBREV_ALL).toString()试试这个 -
@Raghunandan -- 你的建议非常好。但是如果我们想显示实际的措辞,我们需要调整文本输出。无论如何,谢谢你的评论。祝你有美好的一天。
-
哦对了,措辞不同