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

标签 android kotlin datetime time timestamp

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

对于时间戳:1639588870我得到,

  1. 24 小时制:22:51(正确)

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

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

关于android - 在 Kotlin 中将时间戳值转换为 12/24 小时时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70367909/

相关文章:

android - apk 必须使用与之前相同的证书进行签名

android - 无法从 SharedPreferences 获取字符串值

android - 如何使用 Room Library Android 在 TextView 中显示数据?

Android - RoomDb - 在另一个 Activity 中的选择查询中找不到成功插入的实体

kotlin - 如何使用 Gradle Kotlin 脚本创建胖 JAR?

c# - .Net TimezoneInfo.ConvertTime UTC 日期到萨摩亚返回的值不正确

ruby-on-rails-3 - 将列类型从字符变化更改为不带时区的时间戳

java - 无法在模块中使用 android-maps-utils

java - 在 Material Chipgroup (Android) 中检查 Animate Chip

java - 如何使用 Java 中的 Joda 日期/时间库获取 "today"的日期/时间范围?