Swift dateformatter.date(来自 : string) strange behaviour

标签 swift string date dateformatter

<分区>

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"

关于Swift dateformatter.date(来自 : string) strange behaviour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53192416/

相关文章:

python - 在数据框中查找具有日期模式的所有列

java - LocalDate 正在默默地纠正错误的日期?

java - 如何从动态创建的字符串数组中创建 datastore.Text 对象?

C++ 在没有 to_string 的情况下将整数添加到字符串

swift - 是否有任何简写方式来编写 CGPoint、CGRect 等?

ios - Swift - UISearchController 与单独的 searchResultsController

java - 获取字符串中多个字符串之一的第一次出现

SQL查询组合多个表来查找每天商品的价格

ios - 在循环执行期间更改 UIImageView UIImage

ios - 自定义 NSURLProtocol 与 NSURLSession