Ios 检查两个NSDate实例是否包含相同的日期值
我不熟悉斯威夫特。 我有一个大问题(就我而言)。 每天结束前我都有需要删除的内容。Ios 检查两个NSDate实例是否包含相同的日期值,ios,swift,Ios,Swift,我不熟悉斯威夫特。 我有一个大问题(就我而言)。 每天结束前我都有需要删除的内容。 我知道我需要为此比较日期,但我不知道如何做。给定两个日期dataA和dateB let calendar = NSCalendar.currentCalendar() var componantsA = calendar.components(NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit | NSCalenda
我知道我需要为此比较日期,但我不知道如何做。给定两个日期
dataA
和dateB
let calendar = NSCalendar.currentCalendar()
var componantsA = calendar.components(NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate:dateA)
var componantsB = calendar.components(NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate:dateB)
var sameDay:Bool = (componantsA.day == componantsB.day) && (componantsA.month == componantsB.month) && (componantsA.year == componantsB.year)
给定两个日期
dataA
和dateB
let calendar = NSCalendar.currentCalendar()
var componantsA = calendar.components(NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate:dateA)
var componantsB = calendar.components(NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate:dateB)
var sameDay:Bool = (componantsA.day == componantsB.day) && (componantsA.month == componantsB.month) && (componantsA.year == componantsB.year)
您应该使用NSCalendar方法isDate(inSameDayAsDate:),以便我们可以创建一个NSDate扩展,该扩展使用该方法返回布尔值:
extension NSDate {
struct Calendar {
static let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
}
func isInSameDayAs(date date: NSDate) -> Bool {
return Calendar.gregorian.isDate(self, inSameDayAsDate: date)
}
}
用法:
let date1 = NSDate()
let date2 = NSDate().dateByAddingTimeInterval(60)
if date1.isInSameDayAs(date: date2 ){
print("true") // "true\n"
} else {
print("false")
}
您应该使用NSCalendar方法isDate(inSameDayAsDate:),以便我们可以创建一个NSDate扩展,该扩展使用该方法返回布尔值:
extension NSDate {
struct Calendar {
static let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
}
func isInSameDayAs(date date: NSDate) -> Bool {
return Calendar.gregorian.isDate(self, inSameDayAsDate: date)
}
}
用法:
let date1 = NSDate()
let date2 = NSDate().dateByAddingTimeInterval(60)
if date1.isInSameDayAs(date: date2 ){
print("true") // "true\n"
} else {
print("false")
}
非常感谢你,莫里亚!它解决了我的问题!:)非常感谢你,莫里亚!它解决了我的问题!:)Leo,只有当应用程序在这个时间间隔(60秒)工作时,这个代码才会起作用,这对吗?但是如果用户将在11点关闭应用程序,并在1点打开,那会怎么样?@БГСССззззззцц60秒只是为了在同一天创建一个不同的日期,当然,如果您在11:59:0xpm尝试此操作,if将为您提供两个不同的日期,您只需将NSDate()保存为NSUserDefaults,下次用户打开应用程序时,您只需检查是否现在(NSDate())它与保存的日期不在同一天。如果不只是在发布时删除它并保存新日期谢谢你,利奥,你救了我的命!Leo,只有当应用程序在这个时间间隔(60秒)工作时,这个代码才会起作用,这对吗?但是如果用户将在11点关闭应用程序,并在1点打开,那会怎么样?@БГСССззззззцц60秒只是为了在同一天创建一个不同的日期,当然,如果您在11:59:0xpm尝试此操作,if将为您提供两个不同的日期,您只需将NSDate()保存为NSUserDefaults,下次用户打开应用程序时,您只需检查是否现在(NSDate())它与保存的日期不在同一天。如果不只是在发布时删除它并保存新日期谢谢你,利奥,你救了我的命!