我有NSDate *da
,当我打印时,我会收到以下字符串:2013-10-24 00:00:00 +0000
。
NSDateFormatter *form = [[NSDateFormatter alloc] init];
[form setDateFormat:@"yyyy-mm-dd"];
NSDate *myD = [form dateFromString: @"2013-10-24"];
现在我要做的是比较NSDate *da
和NSDate *myD
。如果匹配,我需要打印NSLog
。
if ([da isEqualToDate:myD]) {
NSLog(@"ok");
} else {
NSLog(@"bad");
}
问题在于myD
变为null
。我该如何解决这个问题?
更新
格式化程序仍有问题;但是现在它不会返回NIL。
当我打印da
时,我得到输出2013-10-24 13:00:00 +0000
,当我打印myD
时,我得到输出2013-10-23 18:30:00 +0000
。为什么这没有正确的格式。我认为我的代码的格式化部分仍然存在一些错误。帮助
更新2
NSDate *da = [NSDate date]; ///// PRINTS 2013-09-16 11:52:40 +0000
NSDateFormatter *form = [[NSDateFormatter alloc] init];
[form setDateFormat:@"yyyy-MM-dd"];
NSDate *myD = [form dateFromString: @"2013-09-16"]; ////// PRINTS 2013-09-16 00:00:00 +0000
答案 0 :(得分:1)
您的格式字符串错误,因为'mm'代表分钟,而不是几个月。正确的格式将是
[form setDateFormat:@"yyyy-MM-dd"];
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以更改日期格式,例如
[form setDateFormat:@"yyyy-MM-dd"];
你可以像这样比较..
NSTimeInterval daInterval = [da timeIntervalSince1970];
NSTimeInterval myDInterval = [myD timeIntervalSince1970];
if(daInterval == myDInterval)
NSLog(@"dates are same..");
答案 3 :(得分:0)
我认为你遇到的问题是你没有这样做:
[form setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
您可以在不同的时区创建时间,而不是在打印时将其格式化为您当地的时区。
答案 4 :(得分:0)
NSString *str1=@"2013-10-24 00:00:00 +0000";
NSDateFormatter *form = [[NSDateFormatter alloc] init];
[form setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
NSDate *date1= [form dateFromString:str1];
NSLog(@"%@",date1);
NSString *str2=@"2013-10-24 00:00:00 +0000";
NSDate *date2= [form dateFromString:str2];
if ([date1 isEqualToDate:date2]) {
NSLog(@"Same");
}
else
{
NSLog(@"Not Same");
}
我希望它很有用..