0

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

    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

4 回答 4

0

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

要从字符串中获取日期,我们需要 datestring 和 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);
于 2013-08-28T08:49:07.910 回答
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]]);

它很好地显示了日期。其他行之一中的某些内容必须为空。

于 2013-08-28T08:50:30.840 回答
0

在第 5 行

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

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

NSDate *date = [dateFormat dateFromString:str];
于 2013-08-28T08:00:35.793 回答
0

NSDate 始终以 GMT 形式出现。因此,您必须根据所需的 timeZone 格式化日期。您可以设置设备 timeZOne 或使用 Calendar 设置 timeZOne .. 更新: 使用此日期格式而不是此日期格式

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
于 2013-08-28T07:57:13.817 回答