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

Converting Timestamp value to 12/24 hour Time value in Kotlin

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

对于时间戳:1639588870我得到,

  1. 24 小时格式:22:51(正确

  2. 12 小时格式:22:51 下午(不正确

12 小时格式 应该是 10:51 PM 而不是 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 小时格式可能会出现什么问题?

谢谢。

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 的文档class https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html