无法在iOS swift 3中解析String to Date类型

时间:2017-05-30 13:39:52

标签: swift date nsdateformatter

我正在尝试将String解析为日期,但在特定日期获取nil值。

成功解析2017-04-21 09:00:00 Tis,但为字符串2017-05-30 23:00:00获取nil值。

这是我的代码:

   func checkingDate(date: String) -> Bool {

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
    dateFormatter.locale = Locale.init(identifier: "en_GB")

    let dateObj = dateFormatter.date(from: date)

    dateFormatter.dateFormat = "yyyy-MM-dd"
    print("Dateobj: \(dateFormatter.string(from: dateObj!))")
    let now = Date()

    if let currentData = dateObj {

        if (currentData >= now)  {
            print("big")
            return true
        } else if currentData < now {
            print("small")
            return false
        }
    }

    return false
}

提前致谢

3 个答案:

答案 0 :(得分:1)

使用大写字母H 24小时时间小写字母h是12小时

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

答案 1 :(得分:1)

您使用hh作为小时说明符。这是一个12小时的值,“23”显然超出了这个范围。 (“09”解析因为它在范围内。)

改为使用HH

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

答案 2 :(得分:0)

您需要将dateformater更改为 yyyy-MM-dd HH:mm:ss 。 HH用于显示24小时。

 func checkingDate(date: String) -> Bool {

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        dateFormatter.locale = Locale.init(identifier: "en_GB")

        let dateObj = dateFormatter.date(from: date)

        dateFormatter.dateFormat = "yyyy-MM-dd"
        print("Dateobj: \(dateFormatter.string(from: dateObj!))")
        let now = Date()

        if let currentData = dateObj {

            if (currentData >= now)  {
                print("big")
                return true
            } else if currentData < now {
                print("small")
                return false
            }
        }

        return false
    }