【问题标题】:Swift dateformatter.date(from: string) strange behaviour [duplicate]Swift dateformatter.date(来自:字符串)奇怪的行为[重复]
【发布时间】:2019-04-11 01:22:09
【问题描述】:
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

日期(来自:字符串)似乎以我不理解的方式初始化日期。 任何帮助表示赞赏。 谢谢。

【问题讨论】:

  • yyyy,而不是YYYY

标签: swift string date dateformatter


【解决方案1】:

问题在于日期格式。

更改这些行:

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

对此:

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

【讨论】:

  • 它需要在两个格式化程序中修复,而不仅仅是第二个。
  • 已修复,感谢您的观察。
猜你喜欢
  • 2019-01-17
  • 1970-01-01
  • 2021-11-04
  • 2021-10-28
  • 2011-10-07
  • 2019-11-20
  • 2018-07-27
  • 1970-01-01
相关资源
最近更新 更多