iOS 12.2 不支持时间格式包含冒号 (:)

Time Format Contains Colon(:) Not supported by iOS 12.2

我正在使用 iPhone SE,其中包含 iOS 12.2。我正在将我的日期转换为以下时间格式 (h:MM a),该格式转换正确的时间但删除了小时和分钟之间的冒号 (:)。

我的时间转换代码如下:

static func getDateInWithoutTimeZone(format: String, from timeStamp: Int64) -> String? {
    let date = Date(timeIntervalSince1970: TimeInterval(timeStamp))
    let dateFormatter = DateFormatter()
    dateFormatter.locale = NSLocale.current
    dateFormatter.dateFormat = format //Specify your format that you want
    return dateFormatter.string(from: date)
}

我正在使用此方法转换时间,其中时间戳包含 UNIX 时间值,如 1555395758

我使用上面的函数如下:

guard let time = Date.getDateInWithoutTimeZone(format: "h:MM a", from: 1555395758) else {
    return
}

并获得以下输出:

1104 AM

我做错了什么吗?或者 iOS 12.2 有问题吗?

只需将日期格式 h:MM a 更改为 hh:mm a

请参考以下代码。

static func getDateInWithoutTimeZone(format: String, from timeStamp: Int64) -> String? {
    let date = Date(timeIntervalSince1970: TimeInterval(timeStamp))
    let dateFormatter = DateFormatter()
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter.dateFormat = format //Specify your format that you want
    return dateFormatter.string(from: date)
}

guard let time = getDateInWithoutTimeZone(format: "hh:mm a", from: 1555395758) else {
    return
}
print(time)

MM which stands for months, not minutes.

如果你想显示小时和分钟(加上 am/pm)你的格式字符串应该是 "h:mm a"。每当您想要包含不是直接格式说明符的字符时,建议将它们包含在单引号中。所以你也可以使用 "h':'mm a"。请注意,您在示例中使用的说明符包括 MM(大写 M),它代表月,而不是分钟。