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

Swift dateformatter.date(from: string) strange behaviour

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

日期(来自:字符串):可选(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

日期(来自:字符串):可选(2017-12-24 00:00:00 +0000)

再次转换:24.12.2017

date(from: String) 似乎以我不理解的方式初始化日期。 任何帮助表示赞赏。 谢谢。

日期格式有问题。

更改这些行:

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

对此:

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