【发布时间】:2018-04-12 06:33:47
【问题描述】:
我想更改字符串日期的格式以获取字符串中的月份名称。
我想从“yyyy-MM-dd HH:mm:ss”改成“MMMM”格式
喜欢下面的代码:
func changeFormat(of dateTime: String, fromFormat format1: String = "yyyy-MM-dd HH:mm:ss", toFormat format2: String) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format1
guard let originDate = dateFormatter.date(from: dateTime) else {
return nil
}
dateFormatter.dateFormat = format2
let newFormattedDate = dateFormatter.string(from: originDate)
return newFormattedDate
}
// usage
changeFormat(of "2018-04-12 11:52:12", toFormat : "MMMM")
如果设备中的日期时间格式设置为 24 小时格式(设置 -> 常规 -> 日期和时间 -> 24 小时制),则上述代码将按预期运行,如下所示
但是如果我关闭 24 小时制(激活 12 小时制),该函数将在这一行返回 nil
guard let originDate = dateFormatter.date(from: dateTime) else {
return nil
}
我希望该功能在 24 小时制或 12 小时制下工作,因此用户无需手动更改其设置。
我该怎么办?
【问题讨论】:
-
` changeFormat(of "2018-04-12 11:52:12", toFormat : "MMMM")` 你是如何创建 dateTime "2018-04-12 11:52:12" ?
-
那个字符串“2018-04-12 11:52:12”实际上来自服务器