2013-08-28 80 views
0

我在我的应用程序中使用了NSDate概念。在我的一个课程中,我为日期实例设置了[NSDate date],并将其用于下一课。它对我来说非常完美,但如果我使用那个日期,它会在5:30之前给我提供,所以我用NSDateFormatter来改变它,但是我得到了一个空响应。NSDate总是显示为空

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) 
+0

这是我得到我的控制台更新日期= 2013-08-28 07:34:23 +0000 Str == 2013-08-28 07:34:23 +0000 确切日期=(null) – KSR

+1

格式不匹配 - 向日期格式化程序添加“Z”。也就是说,我看不出有什么理由将它转换回日期对象。日期应该始终保持不变。只需使用正确的格式化程序*输出*。 – Eiko

回答

0

的NSDate总是为GMT。所以,你必须格式化日期,按您需要的timeZone。您可以将设备设置时区或可以使用日历设置时区.. 更新: 使用此日期格式,而不是这个

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

我给了我的时区作为UTC,它会给你当前的时区,但它不起作用 – KSR

+0

我们可以添加这个答案到一个ASKED EVERY DAY类别吗?也许在'问一个问题'... ... –

0

在5号线

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

和8号线 为什么使用的NSString与格式时已经str是字符串

NSDate *date = [dateFormat dateFromString:str]; 
+0

它显示的结果,但它提前1小时我的系统时间@SARFARAZ可汗 – KSR

+0

@sumit Mundra请提醒它显示的结果,但其提前1 HR我的系统时间 – KSR

+0

什么是您的系统时区以及实际结果 –

0

因为从“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); 
0

什么的海峡价值?

我试过代码

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]]); 

的这一部分,它显示的日期好。其他行中的某一行必须为空。