Iphone 格式化日期问题始终返回零

Iphone 格式化日期问题始终返回零,iphone,objective-c,nsdate,nsdateformatter,Iphone,Objective C,Nsdate,Nsdateformatter,我有一个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 i

我有一个
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
。我怎样才能解决这个问题

更新

格式化程序仍然存在问题;但是现在它不会返回零

当我打印
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

您可以像这样更改日期格式化程序

 [form setDateFormat:@"yyyy-MM-dd"];
你可以这样比较

 NSTimeInterval daInterval = [da timeIntervalSince1970];
 NSTimeInterval myDInterval = [myD timeIntervalSince1970];

 if(daInterval == myDInterval)
    NSLog(@"dates are same..");

您的格式字符串错误,因为“mm”代表分钟,而不是月。正确的格式将被删除

[form setDateFormat:@"yyyy-MM-dd"];

月份应为大写:

[form setDateFormat:@"yyyy-MM-dd"];

NSDateFormatter
使用了详细的规范。

我认为您的问题在于您没有这样做:

[form setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
在不同的时区中创建时间,然后在打印时将其格式化为本地时区

    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");
  }

我希望它有用。

粘贴一个完整的代码如何创建两个日期。可能的重复您是否听说过“时区”?问题不是如何比较
NSDate
实例,但是
NSDateFormatter
返回日期格式的
nil
。您可以编辑您的答案以改进它,我将删除否决票。我已经编辑了我的帖子,格式仍然存在问题。请看一下。我的格式仍然有问题。我已经编辑了我的问题。Help@sharonHwk这是一个时区问题;搜索它,您应该可以解决您的问题。我的代码的格式化部分可能会出现一些错误。你能看一下吗,我已经更新了帖子。我已经更新了我的问题,代码中似乎有错误。请阅读我的答案-你不需要格式来比较日期-这真是一个非常痛苦的方法。我尝试了你的代码,但仍然是一样的。我想它也在比较时间
13:00:00+0000
18:30:00+0000
。所以,我应该如何摆脱它。你能用你如何创建第二个日期的代码更新这个问题吗?你希望在那里得到什么?