NSDate始终显示null

时间:2013-08-28 07:49:45

标签: iphone ios ios6 nsdate nsdateformatter

我在我的应用程序中使用NSDate概念。在我的一个类中,我为日期实例设置了[NSDate date],并在下一个类中使用它。它对我来说很完美,但是如果我使用那个日期它会在给我5.30小时之前给我,所以我使用NSDateFormatter来改变它但是我得到了一个空响应。

    NSLog(@"update date= %@",pullToRefreshManager_.pullToRefreshView.lastUpdateDate);
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    [dateFormat setTimeZone:timeZone];
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *str=[NSString stringWithFormat:@"%@",pullToRefreshManager_.pullToRefreshView.lastUpdateDate];
    NSLog(@"Str== %@",str);
    NSDate *date = [dateFormat dateFromString:[NSString stringWithFormat:@"%@",str]];
    NSLog(@"exact date= %@",date);

控制台即将退出

update date= 2013-08-28 07:34:23 +0000 
  Str== 2013-08-28 07:34:23 +0000
 exact date= (null)

4 个答案:

答案 0 :(得分:0)

NSDate总是以GMT形式出现。因此,您必须根据所需的时间区域格式化日期..您可以设置您的设备timeZOne或可以使用日历来设置timeZOne .. 的更新: 使用此日期格式代替此

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

答案 1 :(得分:0)

在第5行

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss +0000"];

和第8行 为什么在已经str的时候使用带有格式的NSString是字符串

NSDate *date = [dateFormat dateFromString:str];

答案 2 :(得分:0)

您将获得null,因为您从“pullToRefreshManager_.pullToRefreshView.lastUpdateDate”获取的日期可能与NSDateFormatter的日期格式不同。

要从字符串中获取日期,我们需要datetring和NSDateFormatter的相同日期格式。

试试这段代码:

NSDateFormatter *formatter1=[[NSDateFormatter alloc]init];
[formatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
formatter1.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSString *StrDate =[formatter1 stringFromDate:yourDate];
NSLog(@"String Date : %@",StrSunday);

NSDate *date = [formatter1 dateFromString:StrDate];
NSLog(@"Date : %@",date);

答案 3 :(得分:0)

str 的价值是什么?

我尝试了这部分代码

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormat setTimeZone:timeZone];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLog(@"exact date= %@",[dateFormat stringFromDate:[NSDate date]]);

它很好地显示了日期。在其他一行中,某些东西必须为空。