我从服务器获取的日期低于 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< /strong>
可能是什么问题?
答案 0 :(得分: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()