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

时间:2019-04-16 09:51:28

标签: ios swift nsdateformatter

我正在使用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有问题?

2 个答案:

答案 0 :(得分: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)

Console Log

  

MM代表几个月,而不是几分钟。

答案 1 :(得分:1)

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