Ios Swift日期格式化程序忽略月份
我写了一个日期重新格式化,但Swift的日期格式化程序本身似乎忽略了月份。文件上说这不应该发生。我如何使它不被忽视Ios Swift日期格式化程序忽略月份,ios,swift,nsdate,nsdateformatter,nsdatecomponents,Ios,Swift,Nsdate,Nsdateformatter,Nsdatecomponents,我写了一个日期重新格式化,但Swift的日期格式化程序本身似乎忽略了月份。文件上说这不应该发生。我如何使它不被忽视 let testDate:String = "2020-11-22-11:00" print("start date: ",testDate," reformatted date: ", reformatDate(dateString: testDate))
let testDate:String = "2020-11-22-11:00"
print("start date: ",testDate," reformatted date: ", reformatDate(dateString: testDate))
func reformatDate(dateString: String) -> String? {
print("dateString: ",dateString)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-DD-HH:mm"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
return dateFormatter.string(from: dateString)
}
这张照片是:
start date: 2020-11-22-11:00 converted date: 22-01-2020 11:00 AM
它不合理地将所有月份变为1 您的格式字符串不正确。应该是:
yyyy-MM-dd-HH:mm
及
dd
表示月日,而dd
表示年日
请注意,您还应执行以下操作:
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
无论何时使用自定义日期格式
用yyyy-MM-DD HH:MM
解析2020-11-22-11:00
意味着您想要2020年的第二十二天,即11月。这毫无意义,DateFormatter
最终忽略了月份,因为一年中的某一天显然是一个“更强”的日期组件。任何一年的第22天都是1月22日
然后,当您使用DD-MM-yyyy h:MM a
格式化解析的日期时,月份组件将显示为01
,而一年中的日期仍显示为22
这里有一些有用的链接可以了解格式说明符,您将了解小写/大写的重要性
yyyy-MM-dd-HH:mm
及
dd
表示月日,而dd
表示年日
请注意,您还应执行以下操作:
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
无论何时使用自定义日期格式
用yyyy-MM-DD HH:MM
解析2020-11-22-11:00
意味着您想要2020年的第二十二天,即11月。这毫无意义,DateFormatter
最终忽略了月份,因为一年中的某一天显然是一个“更强”的日期组件。任何一年的第22天都是1月22日
然后,当您使用DD-MM-yyyy h:MM a
格式化解析的日期时,月份组件将显示为01
,而一年中的日期仍显示为22
这里有一些有用的链接可以了解格式说明符,您将了解小写/大写的重要性
DD-MM-yyyy h:MM a的日期格式输出Date=132-05-2021 9:27 AM
用于Date()
@duncac我觉得有必要解释一下,所以我发布了一个答案。我现在明白了。OP在字符串到日期输入格式化程序和日期到字符串输出格式化程序中都使用了DD
。这为什么会影响OPs输出中的月份值?当我尝试时,DD-MM-yyyy h:MM a的日期格式输出Date=132-05-2021 9:27 AM
用于Date()
@duncac我觉得有必要解释一下,所以我发布了一个答案。我现在明白了。OP在字符串到日期的输入格式化程序和日期到字符串的输出格式化程序中都使用了DD
。我还想补充一点,如果不将区域设置设置为en_US\u POSIX
,尝试解析h:mm a
或HH:mm
是毫无意义的。12/24小时格式可以从系统设置中自动替换。@Sulthan感谢您提醒我!:)我还要补充一点,如果不将区域设置设置为en_US_POSIX
,那么尝试解析h:mm a
或HH:mm
是毫无意义的。12/24小时格式可以从系统设置中自动替换。@Sulthan感谢您提醒我!:)