如何比较两次NSDate。做比较时为nsdate返回零。 #debug我的代码 [英] How to compare two time from NSDate. Returning nil for nsdate when doing comparision. #debug my code
问题描述
这是代码:
// get current date/time
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateFormat:@"HH:mm:ss"];
NSString *currentTime = [dateFormatter stringFromDate:today];
currentTime = [currentTime stringByReplacingOccurrencesOfString:@"AM" withString:@""];
currentTime = [currentTime stringByReplacingOccurrencesOfString:@"PM" withString:@""];
currentTime = [currentTime stringByReplacingOccurrencesOfString:@" " withString:@""];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeStyle:NSDateFormatterMediumStyle];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate *date1= [formatter dateFromString:currentTime];
NSDate *date2 = [formatter dateFromString:@"5:00:00"];
NSComparisonResult result = [date1 compare:date2];
if(result == NSOrderedDescending)
{
NSLog(@"date1 is later than date2");
}
这里当我运行代码时,我得到date1和date2为nil,而我正确地获取当前24小时格式的时间。从[NSDate date]获取当前时间时,我已经应用了相同的日期格式。我在这里缺少什么?
Here when I run the code I am getting date1 and date2 as nil, while I am properly getting the current time in 24 hour format. I had applied same date formatting while getting current time from [NSDate date] . What am I missing here?
编辑1:修正了打字错误并更改了标题。
EDIT 1: Fixed the typo and changed the title.
编辑2:根据建议,要比较只有一小时我可以使用:
EDIT 2: As per suggestion, To compare Only the hour I can use:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSHourCalendarUnit) fromDate:date1];
NSInteger hour = [components hour];
编辑3:更改标题,以符合确切要求。
EDIT 3: Changed the title, to match the exact requirements.
但我无法从当前时间检索date1。它会抛出一个垃圾值。
But I am not able to retrieve date1 from current time. It throws a garbage value .
推荐答案
有一个打字错误:
dateFormatter setDateFormat:@HH:mm:ss];
应该是:
[formatter setDateFormat:@HH :mm:ss];
要比较两个日期,请使用:
To compare two dates use:
NSDate *date1 = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate *date2 = [formatter dateFromString:@"05:00:00"];
NSComparisonResult result = [date1 compare:date2];
if(result == NSOrderedDescending)
{
NSLog(@"date1 is later than date2");
}
如果您只想比较小时数:
If you only want to compare the hours:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *date1 = [NSDate date];
NSDateComponents *date1Components = [calendar components:NSCalendarUnitHour fromDate:date1];
NSInteger date1Hour = date1Components.hour;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate *date2 = [formatter dateFromString:@"05:00:00"];
NSDateComponents *date2Components = [calendar components:NSCalendarUnitHour fromDate:date2];
NSInteger date2Hour = date2Components.hour;
if(date1Hour > date2Hour) {
NSLog(@"date1 is later than date2");
}
这篇关于如何比较两次NSDate。做比较时为nsdate返回零。 #debug我的代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!