【问题标题】:Convert String date to Date doesn't work using dateFormatter and Swift [duplicate]使用 dateFormatter 和 Swift 将字符串日期转换为日期不起作用 [重复]
【发布时间】:2017-03-07 10:45:11
【问题描述】:

这个问题不是另一个问题的副本:我有一个在其他地方找不到的问题。

我想将String 的日期转换为Date 格式。这个String 日期应该与Date 的格式相同,因为我曾经将它作为字符串上传到数据库中。以下是String 日期的样子:

"2017-03-10 22:16:00 +0000";

我正在尝试这样转换:

    let df: DateFormatter = DateFormatter()

    df.dateFormat = "yyyy-MM-dd hh:mm:ss Z"

    print(beginDateString) // "2017-03-10 22:16:00 +0000"

    let beginDate = df.date(from: beginDateString)

    print(beginDate) // App crashs here because of nil value.

问题是它给了我变量beginDate 的零值。 我也尝试过使用其他dateFormat,例如:"yyyy-MM-dd hh:mm:ss",但它仍然不起作用。

【问题讨论】:

  • 把hh改成HH就可以得到日期了。
  • 我已经试过了,这就是为什么这个问题不是重复的!
  • 你试过格式化yyyy-MM-dd HH:mm:ss Z
  • 是的,我正在使用"yyyy-MM-dd HH:mm:ss Z"
  • 此外,您应该将语言环境设置为“POSIX”,例如stackoverflow.com/questions/25657123/…

标签: swift date


【解决方案1】:

使用yyyy-MM-dd HH:mm:ss Z 而不是yyyy-MM-dd hh:mm:ss Z

因为hh上午/下午(1~12)小时。

您也可以使用:yyyy-MM-dd HH:mm:ss xxxxyyyy-MM-dd HH:mm:ss XXXX 等。

Read more

【讨论】:

  • hh is for (01-12)
【解决方案2】:

试试这个...

let beginDateString: String = "2017-03-10 22:16:00 +0000"
let df: DateFormatter = DateFormatter()

df.dateFormat = "yyyy-MM-dd HH:mm:ss Z"

if let beginDate = df.date(from: beginDateString)
{
    print(beginDate) 
}

正如@javimuu 所说,您必须更改模板。

【讨论】:

    猜你喜欢
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多