Ios 将日期转换为格式日、日、月、年
我正在尝试将日期字符串从Ios 将日期转换为格式日、日、月、年,ios,swift,nsdateformatter,Ios,Swift,Nsdateformatter,我正在尝试将日期字符串从yyyy-MM-dd'T'HH:MM:ss.SSS'Z'转换为“day,date-month-year”,类似于“2018年1月1日星期一” 我正在使用我的helper函数将日期字符串从一种格式转换为另一种格式。在下面的函数中,我不确定需要将的哪些参数传递给: func convertDate(from inputFormat: String, to outputFormat: String) -> String { let dateFormatter =
yyyy-MM-dd'T'HH:MM:ss.SSS'Z'
转换为“day,date-month-year”,类似于“2018年1月1日星期一”
我正在使用我的helper函数将日期字符串从一种格式转换为另一种格式。在下面的函数中,我不确定需要将的哪些参数传递给:
func convertDate(from inputFormat: String, to outputFormat: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = inputFormat
if let dateInLocal = dateFormatter.date(from: self) {
dateFormatter.dateFormat = outputFormat
dateFormatter.amSymbol = "AM"
dateFormatter.pmSymbol = "PM"
return dateFormatter.string(from: dateInLocal)
}
return "NA"
}
使用上面的扩展,如下所示
dateAndName = date.convertDate(from:"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", to: "")
有关日期格式,请参阅文档
EEEE
给出了完整的工作日名称。
MMMM
给出了完整的月份名称。
dd
给出一个两位数的月数。
yyyy
给出了一个四位数的年份号
不要在输入格式中引用Z
。日期字符串中的Z
表示日期字符串的时区。如果在日期格式中引用Z
,则字符串中的Z
基本上被忽略,作为时区指示符,并且日期格式化程序将解析日期字符串,就像它是本地时间一样,并给出错误的结果
以下是您的清理代码:
func convertDate(from inputFormat: String, to outputFormat: String) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = inputFormat
dateFormatter.local = Locale(identifier: "en_US_POSIX")
if let dateInLocal = dateFormatter.date(from: self) {
dateFormatter.dateFormat = outputFormat
dateFormatter.locale = Locale.current
return dateFormatter.string(from: dateInLocal)
}
return nil
}
dateAndName = date.convertDate(from:"yyyy-MM-dd'T'HH:mm:ss.SSSZ", to: "EEEE, dd MMMM yyyy")
请注意,此函数应返回可选字符串。让调用方决定如何处理无效输入
还要注意用于分析输入字符串的特殊区域设置。不要转义Z。Z表示UTC时间。如果你忽略它,你会得到一个当前时区的日期。这些可能会帮助你