Objective c 目标C如何在忽略第二个值的情况下比较两个日期和时间

Objective c 目标C如何在忽略第二个值的情况下比较两个日期和时间,objective-c,nsdate,Objective C,Nsdate,事实上,我们想用这种格式“yyyy-MM-dd-HH:MM”来比较NSDate,那么我们如何比较日期、小时和分钟的两个日期时间值,而忽略目标c、ios中的第二个值呢?现在,最好的方法可能是使用 要比较它们(找出哪一个比较新/晚),请改用。现在,最好的方法可能是使用 要比较它们(找出哪一个最近/晚),请改用。NSCalendar有一种非常方便的方法来比较受特定单位限制的日期。将toUnitGranularity参数设置为NSCalendarUnitMinute,秒数将被忽略 NSDate *dat

事实上,我们想用这种格式“yyyy-MM-dd-HH:MM”来比较NSDate,那么我们如何比较日期、小时和分钟的两个日期时间值,而忽略目标c、ios中的第二个值呢?

现在,最好的方法可能是使用


要比较它们(找出哪一个比较新/晚),请改用。

现在,最好的方法可能是使用


要比较它们(找出哪一个最近/晚),请改用。

NSCalendar
有一种非常方便的方法来比较受特定单位限制的日期。将
toUnitGranularity
参数设置为
NSCalendarUnitMinute
,秒数将被忽略

NSDate *date1 = [NSDate date];
NSDate *date2 = [date1 dateByAddingTimeInterval:30.0];
NSComparisonResult compareDateIgnoringSeconds = [[NSCalendar currentCalendar]        
                                                compareDate:date1 
                                                     toDate:date2 
                                          toUnitGranularity:NSCalendarUnitMinute];
NSLog(@"%@, %@, %ld", date1, date2, compareDateIgnoringSeconds);

结果是
sensorderedame
表示相等,
sensorderedescending
sensorderedescending
表示
date1
之前
date2
date1
之后
date2

NSCalendar
有一种非常方便的方法来比较约束到特定单位的日期。将
toUnitGranularity
参数设置为
NSCalendarUnitMinute
,秒数将被忽略

NSDate *date1 = [NSDate date];
NSDate *date2 = [date1 dateByAddingTimeInterval:30.0];
NSComparisonResult compareDateIgnoringSeconds = [[NSCalendar currentCalendar]        
                                                compareDate:date1 
                                                     toDate:date2 
                                          toUnitGranularity:NSCalendarUnitMinute];
NSLog(@"%@, %@, %ld", date1, date2, compareDateIgnoringSeconds);

结果是
日期2
之前和
日期2
之后的
日期1
日期2
之前和
日期1
之后的
日期2

在这两个日期将第二个值设置为
00
,您可以使用
NSDateFormatter
将这两个
NSString
对象转换为
NSDate
对象,然后使用
NSDateComponents
检查相关组件的相等性。或者,如果它们的格式确实与您设置的格式相同且简单(相同的时区等),您只需在子字符串上进行比较(删除代表分钟的最后两个字符)。@Larme没有字符串,只需到
NSDate
。OP只想忽略两个
NSDate
实例的“秒数”。一方面,我想结束这个问题,因为它本质上是一个重复的。另一方面,对于新手来说,如何修改这些答案来解决当前问题可能并不明显。@rmaddy:这就是问题描述的难点所在。作者使用了
NSDate
术语和格式。这非常令人困惑,因为
NSDate
object
description
方法显示+0000,所以我假设
NSString
在两个日期都将第二个值设置为
00
,您可以使用
NSDateFormatter
将这两个
NSString
对象转换为
NSDate
对象,然后使用
NSDateComponents
检查相关组件的相等性。或者,如果它们的格式确实与您设置的格式相同且简单(相同的时区等),您只需在子字符串上进行比较(删除代表分钟的最后两个字符)。@Larme没有字符串,只需到
NSDate
。OP只想忽略两个
NSDate
实例的“秒数”。一方面,我想结束这个问题,因为它本质上是一个重复的。另一方面,对于新手来说,如何修改这些答案来解决当前问题可能并不明显。@rmaddy:这就是问题描述的难点所在。作者使用了
NSDate
术语和格式。这非常令人困惑,因为
NSDate
object
description
方法显示+0000,这就是为什么我假设
NSString
我忘记了这个。比我的答案好多了。我忘了这个。比我的答案好多了。