Swift dateformatter.date(from:string)奇怪的行为


import UIKit
let dateString="2018.03.11"
let df = DateFormatter()
df.timeZone=TimeZone(secondsFromGMT: 0)
df.dateFormat="YYYY.MM.dd"
let date=df.date(from: dateString)
print("orig dateString: (dateString)")
print("date(from: string): (date)")
print("converted again: (df.string(from: date!))")

现在,这段代码似乎可以按预期工作。输入和输出日期相同:原始日期字符串:2018.03.11

date(from:string(:可选(2018-03-11 00:00:00+0000(

再次转换:2018.03.11

但如果我尝试更改输入格式:

import UIKit
let dateString="11.03.2018"
let df = DateFormatter()
df.timeZone=TimeZone(secondsFromGMT: 0)
df.dateFormat="dd.MM.YYYY"

let date=df.date(from: dateString)
print("orig dateString: (dateString)")
print("date(from: string): (date)")
print("converted again: (df.string(from: date!))")

我得到以下结果:

原始日期字符串:11.03.2018

date(from:string(:可选(2017-12-24 00:00:00+0000(

再次转换:2017年12月24日

日期(from:String(似乎以一种我不理解的方式初始化了日期。感谢您的帮助。非常感谢。

问题出在日期格式上。

更改这些行:

df.dateFormat="YYYY.MM.dd"
df.dateFormat="dd.MM.YYYY"

到此:

df.dateFormat="yyyy.MM.dd"
df.dateFormat="dd.MM.yyyy"

最新更新