无法从格式“yyyy-MM-dd'T'HH:mm:ss+00:00”创建日期
Posted
技术标签:
【中文标题】无法从格式“yyyy-MM-dd\'T\'HH:mm:ss+00:00”创建日期【英文标题】:unable to create date from format "yyyy-MM-dd'T'HH:mm:ss+00:00"无法从格式“yyyy-MM-dd'T'HH:mm:ss+00:00”创建日期 【发布时间】:2018-07-01 22:25:14 【问题描述】:我想从字符串转换为日期。 我在这里使用 "yyyy-MM-dd'T'HH:mm:ss+00:00" 的格式是否正确?
extension String
func format(_ format:String) -> String
var date: Date?
let dateFormatterGet = DateFormatter()
let dateFormatterOutput = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+00:00"
dateFormatterOutput.dateFormat = format
if let d = dateFormatterGet.date(from: self)
date = d
return dateFormatterOutput.string(from: date!)
extension Date
func string(with format: String) -> String
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: self)
【问题讨论】:
Annnndddd,你输入了什么?你有什么问题? 为什么在日期格式中使用 +00:00? 【参考方案1】:问题出在一行:
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+00:00"
+00:00
需要替换成xxxx
如:
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxx"
您的代码将变为:
func format(_ format:String) -> String
var date: Date?
let dateFormatterGet = DateFormatter()
let dateFormatterOutput = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxx"
dateFormatterOutput.dateFormat = format
if let d = dateFormatterGet.date(from: self)
date = d
return dateFormatterOutput.string(from: date!)
注意:这里我假设您使用的日期字符串将包含时区为 +xx:xx(例如 +02:00) 等等在。但是,对于不同的格式,您需要使用不同数量的x
(如果时区不包含Z,则使用小x
):
x
-> -08, +0330
xx
-> -0800
xxx
-> -800, -075254
xxxx
-> -8:00, -07:52:54
如果时区包含Z
,那么我们使用大写X
。
【讨论】:
以上是关于无法从格式“yyyy-MM-dd'T'HH:mm:ss+00:00”创建日期的主要内容,如果未能解决你的问题,请参考以下文章
如何从日期格式“yyyy-MM-dd'T'HH:mm:ss.SSSZ”中分别获取日期、年份、小时、分钟?
Java 格式 yyyy-MM-dd'T'HH:mm:ss.SSSz 转 yyyy-mm-dd HH:mm:ss
如何快速转换日期 yyyy-mm-dd'T'HH:mm:ss.SSSZ [重复]
如何快速将 yyyy-MM-dd'T'HH:mm:ss.SSS'Z' 转换为 MM-dd-yyyy