我的dateFormatter函数中缺少什么?

时间:2019-03-14 18:44:48

标签: swift nsdateformatter

我正在尝试创建一个函数,以从API快速将字符串转换为日期。我已经看到了很多有关此的示例,并尝试执行相同的操作,但始终返回nil。

let dateStr = "1996-11-24T09:02:32Z"

func toDate(str: String) -> Date? {
    let dateForm = DateFormatter()
    dateForm.dateFormat = "dd-MM-yyyy"
    dateForm.locale = Locale(identifier: "en_US")
    let date = dateForm.date(from: str)
    return date
}


print(toDate(str: dateStr)) // always prints nil

我试图进行调整,更改位置,删除位置,更改dateFormat,但没有任何效果。

这里可能出什么问题了?

先谢谢您

1 个答案:

答案 0 :(得分:0)

由于您的日期是df['normalized-losses'] = df['normalized-losses'].astype('float') mean_val = df['normalized-losses'].mean() print(mean_val) ,并且您使用的是不匹配的格式1996-11-24T09:02:32Z。因此您需要将dd-MM-yyyy替换为dd-MM-yyyy,它将正常工作。

您的结果将是:

yyyy-MM-dd'T'HH:mm:ssZ

或者您也可以按照dan的建议使用简短方式:

let dateStr = "1996-11-24T09:02:32Z"

func toDate(str: String) -> Date? {
    let dateForm = DateFormatter()
    dateForm.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
    dateForm.locale = Locale(identifier: "en_US_POSIX")
    let date = dateForm.date(from: str)
    return date
}


print(toDate(str: dateStr)) // "Optional(1996-11-24 09:02:32 +0000)\n"

或者,如果您更喜欢func toDate(str: String) -> Date? { return ISO8601DateFormatter().date(from: str) } print(toDate(str: dateStr)) // "Optional(1996-11-24 09:02:32 +0000)\n"

Extension