这个时间格式是什么?如何将其转换为可读格式?

问题描述 投票:0回答:2

在我的 iOS 应用程序中,我得到的日历事件的日期格式为

20231220T090000
作为响应。我将如何从日期转换此日期时间?

如何将其转换为

20 Dec 2023, 9 AM

我无法找出正确的日期格式。

ios swift date datetime timezone
2个回答
0
投票

在您的示例中,

20231220T090000
表示以下格式的日期:

yyyyMMdd'T'hhmmss

并且您尝试将其转换为以下格式:

dd MMM yyyy, h a

您可以使用

DateFormatter
解析输入字符串中的日期,然后将其重新格式化为具有目标格式的另一个日期。

这样的东西可以实现你正在寻找的东西:

let inFormat = DateFormatter()
inFormat.dateFormat = "yyyyMMdd'T'hhmmss"

let inDate = inFormat.date(from: "20231220T090000")

let outFormat = DateFormatter()
outFormat.dateFormat = "dd MMM yyyy, h a"

let outString = outFormat.string(from: inDate!)

print(outString) // 20 Dec 2023, 9 AM

0
投票

您需要一个日期格式化程序来解析输入:

let parsingFormatter = DateFormatter()
parsingFormatter.locale = Locale(identifier: "en_US_POSIX")
parsingFormatter.dateFormat = "yyyyMMdd'T'hhmmss"

顺便说一下,您没有指定输入字符串代表哪个时区。通常是 GMT/UTC/Zulu,在这种情况下,您还需要包括:

parsingFormatter.timeZone = TimeZone(secondsFromGMT: 0)

您需要另一个来生成输出字符串:

let outputFormatter = DateFormatter()
outputFormatter.dateFormat = "dd MMM yyyy',' h a"

顺便说一句,我们通常会避免使用

dateFormat
作为输出字符串,而是使用
dateStyle
timeStyle
来代替,例如:

let outputFormatter = DateFormatter()
outputFormatter.dateStyle = .medium
outputFormatter.timeStyle = .short

无论如何,现在您有了两个格式化程序,您可以解析输入并准备输出字符串,如下所示:

let input = "20231220T090000"
if let date = parsingFormatter.date(from: input) {
    let result = outputFormatter.string(from: date)
    print(result)
}
© www.soinside.com 2019 - 2024. All rights reserved.