【问题标题】:Date Conversion 24 hours and 12 hours - Kotlin日期转换 24 小时和 12 小时 - Kotlin
【发布时间】:2021-08-14 06:19:34
【问题描述】:

我从服务器获取低于 UTC 格式的日期:

2021-05-20 09:14:55

现在,我必须将其转换为 24 小时格式和 12 小时格式的本地格式。

要将其转换为 24 小时格式,我已完成以下操作:

val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH)
df.timeZone = TimeZone.getTimeZone("UTC")
val date = df.parse(dataDate)
df.timeZone = TimeZone.getDefault()
val formattedDate = df.format(date)

结果为:2021-05-20 14:44:55(24 小时本地)

现在,我尝试将相同的日期转换为 12 小时格式的本地日期,如下所示:

val utc = TimeZone.getTimeZone("UTC")
val inputFormat: DateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
                Locale.ENGLISH)
inputFormat.timeZone = utc
val outputFormat: DateFormat = SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa",
                Locale.ENGLISH)
outputFormat.timeZone = utc
val dateInput = inputFormat.parse(dataDate)
val output = outputFormat.format(dateInput)

它给我的输出为 2021-05-20 09:14:55 AM(本地 12 小时)

我认为仅添加 AM 作为后缀是错误的。这可能是错误的,因为如果 24 小时日期结果是 2021-05-20 14:44:55 那么 12 小时日期结果应该是 2021-05-20 02:44:55 PM

可能是什么问题?

【问题讨论】:

    标签: android date datetime kotlin datetime-format


    【解决方案1】:

    您使用TimeZone.getDefault() 打印24H 格式,使用TimeZone.getTimeZone("UTC") 打印12H 格式。

    df.timeZone = TimeZone.getDefault()
    val formattedDate = df.format(date)
    
    outputFormat.timeZone = utc
    val output = outputFormat.format(dateInput)
    

    TimeZone.getDefault() 使用您的本地时区,在这种情况下不是 UTC。
    12H 格式使用本地时区,就像 24H 格式一样。

    outputFormat.timeZone = TimeZone.getDefault()
    

    【讨论】:

    • 哇哦谢谢buro。为愚蠢的错误道歉。
    猜你喜欢
    • 2010-10-01
    • 2021-12-24
    • 2018-08-02
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多