将时间戳值转换为 Kotlin 中的 12/24 小时时间值

Posted

技术标签:

【中文标题】将时间戳值转换为 Kotlin 中的 12/24 小时时间值【英文标题】:Converting Timestamp value to 12/24 hour Time value in Kotlin 【发布时间】:2022-01-18 21:19:04 【问题描述】:

我必须将特定的时间戳值转换为时间。 我可以成功地将其转换为 24 小时格式。但在显示或将其转换为 12 小时格式时出现小问题。

对于时间戳:1639588870我得到了,

    24 小时制:22:51(正确

    12 小时制:22:51 PM(不正确

12 小时制应该是晚上 10:51 而不是 22:51 PM

我正在使用以下函数将时间戳值转换为我的特定时间格式显示值:

fun getDateTime(timeStamp: String): String? 
    var sdf = SimpleDateFormat("HH:mm")
    try 
        if (prefManager.getDefaultTimeSelection().equals(TIME_24_HOUR)) 
            sdf = SimpleDateFormat("HH:mm")
         else 
            sdf = SimpleDateFormat("HH:mm aa")
        
        val netDate = Date(timeStamp.toLong() * 1000)
        return sdf.format(netDate)
     catch (e: Exception) 
        return e.toString()
    

将时间戳转换为 12 小时格式可能会出现什么问题?

谢谢。

【问题讨论】:

【参考方案1】:

12 小时格式为hh(小写)。 HH 是 24 小时制。

你必须改变这一行

sdf = SimpleDateFormat("HH:mm aa")

sdf = SimpleDateFormat("hh:mm aa")

来自文档:

Letter  Date or Time Component
H       Hour in day (0-23)
h       Hour in am/pm (1-12)

SimpleDateFormat 类的文档 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

【讨论】:

以上是关于将时间戳值转换为 Kotlin 中的 12/24 小时时间值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应将时间戳值转换为特定时间格式?

从 Impala 中的时间戳值变量中提取日期

如何将改造回调响应中的回调从 java 转换为 Kotlin

将 postgresql 中的 UTC 时区转换为 EST(本地时间)

如何使用内容协商将 json 转换为 ktor 中的 kotlin 对象?

将 Kotlin 转换为 Java