我正在尝试将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
}
提前致谢
答案 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
}