如何在Swift中检查有效的Date()

3
如何在进行SQL查询之前检查日期是否有效
request.predicate = NSPredicate (format: "% @ <= AND myDate% @> = myDate" startDate, endDate)

在闰年中会发生错误,例如2016年2月30日。

// code form comment...
let startDate:NSDate = dateFormatter.dateFromString("2016-10-01")!
let endDate:NSDate = dateFormatter.dateFromString("2016-10-29")!

9
第30个二月从未存在过。即使是闰年,二月也只到29日。就CoreFoundation而言,使用第30个二月的日期与使用192日的四月份日期没有任何区别。 - Jacob King
let startDate:NSDate = dateFormatter.dateFromString("2016-10-01")! let endDate:NSDate = dateFormatter.dateFromString("2016-10-29")! - AndreLuisRomero
抱歉,是我的错误... 该注释确实已从应用程序中删除。 - Vedant Mahant
我找到了这段代码 - AndreLuisRomero
https://dev59.com/cVwX5IYBdhLWcg3wnwgy - AndreLuisRomero
2个回答

9
< p > 由 < code > DateFormatter 的 < code > date(from:) 方法生成的日期的返回值是可选的。如果返回 < code > nil ,则日期无效,否则日期有效。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"

if let date = dateFormatter.date(from:"2016-02-30") {
    print(date) // if this prints date is valid
}
else {
    print("Date is Invalid") // if this prints date is invalid
}

Date不能用不在实际日历日期范围内的无效日期字符串进行实例化。

如果您想询问一个日期是否落在另外两个日期之间,请参见此处:https://dev59.com/_1wY5IYBdhLWcg3wPFmo#40057117


0
使用DateFormatter类...它可以用于检查任何字符串是否为有效日期,然后相应地将该字符串转换为NSData。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接