iam比较两个日期,但是当我将两个日期键入一个字符串变量时它的工作情况,但是当我将那些valuse传递给数据时,比较的方法是不工作的原因?
这是我使用的代码?
NSString *dateString =@"2013-05-12 22:10:02";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:MM:SS"];
NSDate *dateFromString = [[NSDate alloc] init];
// voila!
dateFromString = [dateFormatter dateFromString:dateString];
NSString *dateString1 = @"2013-03-04 07:59:08";
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:MM:SS"];
NSDate *dateFromString1 = [[NSDate alloc] init];
// voila!
dateFromString1 = [dateFormatter dateFromString:dateString1];
if ([dateFromString compare:dateFromString1] == NSOrderedDescending)
{
NSLog(@"1 is later than 2");
} else if ([dateFromString compare:dateFromString1] == NSOrderedAscending)
{
NSLog(@"1 is earlier than 2");
} else
{
NSLog(@"dates are the same");
}
**当iam将日期(nsstring格式)传递给方法
时(int)compareDate:(NSString *)date1:(NSString *)date2
在那个方法中我写了上面的比较代码 所以我称之为
[self compareDate:date1:date2]
和iam总是得到“日期相同”的价值????当我手动输入日期时,我得到了确切的答案?为什么会这样?**
答案 0 :(得分:2)
使用以下代码替换您的代码。 “mm”格式表示分钟,“MM”表示数月。并使用“ss”秒而不是“SS”。阅读有关日期格式化程序的详细信息,请阅读Apple文档。
NSString *dateString =@"2013-05-12 22:10:02";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *dateFromString = [[NSDate alloc] init];
// voila!
dateFromString = [dateFormatter dateFromString:dateString];
NSString *dateString1 = @"2013-03-04 07:59:08";
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *dateFromString1 = [[NSDate alloc] init];
// voila!
dateFromString1 = [dateFormatter dateFromString:dateString1];
if ([dateFromString compare:dateFromString1] == NSOrderedDescending)
{
NSLog(@"1 is later than 2");
} else if ([dateFromString compare:dateFromString1] == NSOrderedAscending)
{
NSLog(@"1 is earlier than 2");
} else
{
NSLog(@"dates are the same");
}
答案 1 :(得分:1)
问题在于格式化日期。使用mm
代替MM
分钟,使用ss
代替SS
秒。
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];