如何快速转换日期 yyyy-mm-dd'T'HH:mm:ss.SSSZ [重复]
Posted
技术标签:
【中文标题】如何快速转换日期 yyyy-mm-dd\'T\'HH:mm:ss.SSSZ [重复]【英文标题】:How to convert date yyyy-mm-dd'T'HH:mm:ss.SSSZ in swift [duplicate]如何快速转换日期 yyyy-mm-dd'T'HH:mm:ss.SSSZ [重复] 【发布时间】:2018-09-11 11:41:50 【问题描述】:我将日期从 "yyyy-mm-dd'T'HH:mm:ss.SSSZ" 转换为 "dd-mm-yyyy" 和我的日期是 "2018-09-11T09:53:25.000+0000" 这是我的代码
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-mm-dd'T'HH:mm:ss.SSSZ"
let dateFromInputString = dateFormatter.date(from: "2018-09-11T09:53:25.000+0000")
dateFormatter.dateFormat = "dd-mm-yyyy"
if(dateFromInputString != nil)
return dateFormatter.string(from: dateFromInputString!)
else
debugPrint("could not convert date")
return "N/A"
但我正在转换日期 11-23-2018 像这样
但我的方面是 11-09-2018
【问题讨论】:
你住在印度,对吧?时区在哪里 5:30 不同没有?你得到“23”,因为它是“53-30 分钟”。为什么?因为您在月份中使用了mm
而不是MM
(顺便说一下,在第一种格式和第二种格式中使用了两次)。
附注且不相关,但使用if let
而不是!= nil
后跟强制展开:if let date = dateFromInputString return dateFormatter.string(from: date)
@Larme 感谢您的建议。
【参考方案1】:
您的dateFormat
是错误。当您在两个个月和分钟中使用“mm”时,格式中的歧义应该已经很清楚了。
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
mm - 分钟
MM - 月
第二种日期格式也是如此。
有关日期格式的更多信息,请参阅this。
【讨论】:
【参考方案2】:试试这个
func GetFormatedDate(date_string:String,dateFormat:String)-> String
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = dateFormat
let dateFromInputString = dateFormatter.date(from: date_string)
dateFormatter.dateFormat = "dd-MM-yyyy" // Here you can use any dateformate for output date
if(dateFromInputString != nil)
return dateFormatter.string(from: dateFromInputString!)
else
debugPrint("could not convert date")
return "N/A"
这样使用:
self.GetFormatedDate(date_string: "2018-09-11T09:53:25.000+0000", dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
输出:
11-09-2018
【讨论】:
【参考方案3】:应该是
dateFormatter.dateFormat = "dd-MM-yyyy"
试试看
【讨论】:
【参考方案4】:你的 dateFormater 错误,应该是 yyyy-MM-dd'T'HH:mm:ss.SSSZ
而不是这个 yyyy-mm-dd'T'HH:mm:ss.SSSZ
dateFormatter.dateFormat = "dd-mm-yyyy"
到
dateFormatter.dateFormat = "dd-MM-yyyy"
【讨论】:
【参考方案5】:试试这个:
extension String
func convertDate() -> String
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
if let dateInLocal = dateFormatter.date(from: self)
dateFormatter.dateFormat = "dd-MM-yyyy"
return dateFormatter.string(from: dateInLocal)
return "NA"
【讨论】:
【参考方案6】:let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let dateFromInputString = dateFormatter.date(from: "2018-09-11T09:53:25.000+0000")
dateFormatter.dateFormat = "dd-MM-yyyy"
if(dateFromInputString != nil)
return dateFormatter.string(from: dateFromInputString!)
else
debugPrint("could not convert date")
return "N/A"
【讨论】:
以上是关于如何快速转换日期 yyyy-mm-dd'T'HH:mm:ss.SSSZ [重复]的主要内容,如果未能解决你的问题,请参考以下文章
无法从格式“yyyy-MM-dd'T'HH:mm:ss+00:00”创建日期
如何从日期格式“yyyy-MM-dd'T'HH:mm:ss.SSSZ”中分别获取日期、年份、小时、分钟?