如何获取格式化格式swift的系统时间?
How to get system time in formatted style swift?
我有这样的时间必须发送到服务器:
2019-03-06T14:49:55+01:00
我以为我可以这样做:
NSDate(timeIntervalSince1970: TimeInterval(NSDate().timeIntervalSince1970))
但我有这样的时间:
2021-01-24 15:42:31 +0000
我认为我必须使用用户解码模式,所以使用这样的方式:
let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd HH:mm:ss+z"
let dateFormatterPrint = DateFormatter()
dateFormatterPrint.dateFormat = "MMM dd,yyyy"
let time = NSDate(timeIntervalSince1970: TimeInterval(NSDate().timeIntervalSince1970))
if let date = dateFormatterGet.date(from: time.description) {
print(dateFormatterPrint.string(from: date))
} else {
print("There was an error decoding the string")
}
但它的输出是:
There was an error decoding the string
什么意思这次不能这样解码了。我做错了什么?
您正在从一个日期的时间间隔创建一个字符串,其中三个转换是浪费的。
转换失败,因为 time.description
与格式 yyyy-MM-dd HH:mm:ss+z
不匹配
要获取带时区的 ISO8601 字符串,日期格式为 yyyy-MM-dd'T'HH:mm:ssZ
,您必须指定固定的语言环境
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let isoString = formatter.string(from: Date())
Rob 在评论中建议有一个更短的方法
let formatter = ISO8601DateFormatter()
formatter.timeZone = .current
let isoString = formatter.string(from: Date())
我有这样的时间必须发送到服务器:
2019-03-06T14:49:55+01:00
我以为我可以这样做:
NSDate(timeIntervalSince1970: TimeInterval(NSDate().timeIntervalSince1970))
但我有这样的时间:
2021-01-24 15:42:31 +0000
我认为我必须使用用户解码模式,所以使用这样的方式:
let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd HH:mm:ss+z"
let dateFormatterPrint = DateFormatter()
dateFormatterPrint.dateFormat = "MMM dd,yyyy"
let time = NSDate(timeIntervalSince1970: TimeInterval(NSDate().timeIntervalSince1970))
if let date = dateFormatterGet.date(from: time.description) {
print(dateFormatterPrint.string(from: date))
} else {
print("There was an error decoding the string")
}
但它的输出是:
There was an error decoding the string
什么意思这次不能这样解码了。我做错了什么?
您正在从一个日期的时间间隔创建一个字符串,其中三个转换是浪费的。
转换失败,因为 time.description
与格式 yyyy-MM-dd HH:mm:ss+z
要获取带时区的 ISO8601 字符串,日期格式为 yyyy-MM-dd'T'HH:mm:ssZ
,您必须指定固定的语言环境
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let isoString = formatter.string(from: Date())
Rob 在评论中建议有一个更短的方法
let formatter = ISO8601DateFormatter()
formatter.timeZone = .current
let isoString = formatter.string(from: Date())