swift - 无法从格式“yyyy-MM-dd'T'HH:mm:ss+00:00”创建日期
问题描述
我想从字符串转换为日期。我在这里使用正确的格式 吗? "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)
}
}
解决方案
问题在于:
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)等等。但是,对于不同的格式,您需要使用不同的数量(如果时区不包含 Z,则使用x
small ):x
x
-> -08, +0330xx
-> -0800xxx
-> -800, -075254xxxx
-> -8:00, -07:52:54
如果时区包含Z
,那么我们使用大写X
。
推荐阅读
- r - 使用 R 和 rvest 抓取 Web 活动图表;overbuff.com
- ruby-on-rails - 渲染 JSON:删除空字段
- linux - 如何在 linux 中绕过 seccomp
- r - 用对应于另一分类列及其类别的该列的值的中值来插补一列
- java - 当我尝试在 selenium 中通过 WebTable 时,总是给我的行数为 0
- python - 写入 csv 文件会输出其自己单元格中的每个字母
- magento - Google 连接器无法授权
- javascript - 无法弄清楚如何将副本传递给 DYMO.Label.Framework.3.0.js SDK
- delphi - 从基类delphi中释放超类对象
- android-studio - Android Studio 更改了我的文档根目录。我可以改回来吗?