【问题标题】:iphone NSDate Conversion problemiphone NSDate 转换问题
【发布时间】:2011-05-20 06:45:29
【问题描述】:

在我的 Facebook 图表 Api..

我正在获取这些数据.. 来自 Json..
"updated_time" = "2011-05-17T14:52:16+0000";

我正在使用此代码将其转换为有效的日期格式

NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
//2010-12-01T21:35:43+0000  
[df setDateFormat:@"yyyy-mm-ddHH:mm:ssZZZZ"];
NSDate *date = [df dateFromString:[[forTable valueForKey:@"updated_time"] stringByReplacingOccurrencesOfString:@"T" withString:@""]];
[df setDateFormat:@"eee MMM dd, yyyy hh:mm"];
pastDate = [df stringFromDate:date];
NSLog(@"and the date string is %@",pastDate);

它在控制台中给了我这个结果

and the date string is Mon 01 17, 2011 08:22

虽然 json 值给了我 5 月的日期。这段代码给了我 1 月的日期

谁能告诉我这里发生了什么?

【问题讨论】:

  • 我不确定这是否是问题,但在您的解析格式中,您似乎有一个月的“mm”,不应该是“MM”吗?此外,“+”可能会导致问题,看起来您解析了 T。

标签: iphone objective-c ios nsdate nsdateformatter


【解决方案1】:

看起来您的日期格式字符串没有考虑字母“T”——为了安全起见,您可能应该在撇号之间包含文字文本。试试:

[df setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZ"];

【讨论】:

    【解决方案2】:

    dateFormat 错误,月份应该是大写 Ms:

    [df setDateFormat:@"yyyy-MM-ddTHH:mm:ssZZZZ"];
    

    【讨论】:

    • 你不见了,'T'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多