【问题标题】:How do I convert from NSString to NSDate using NSDateFormater如何使用 NSDateFormater 从 NSString 转换为 NSDate
【发布时间】:2012-01-13 12:03:37
【问题描述】:

我有这个字符串:2012-01-12T21:01:00 和这个代码:

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
    NSDate* arrivalTime=[df dateFromString:field_arrival_time];

但它返回nil。我应该使用什么日期格式来解析这个字符串?

【问题讨论】:

    标签: objective-c ios cocoa-touch nsdate nsdateformatter


    【解决方案1】:

    您的字符串2012-01-12T21:01:00 包含文字T(至少我相信它是文字,它似乎并不表示时区)。您必须在日期格式中包含此内容。

    [df setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss"];
    

    请注意日期格式中缺少a,使用它将要求您的输入字符串使用 AM 或 PM 前面有一个空格。有关NSDateFormatter 特殊字符的更多信息,请查看Date Formatting Guide,特别注意固定格式

    编辑:您的输入字符串未指定时区,当您通过NSLog() 输出时,它可能会被解释为 UTC 并本地化为您机器的时区。

    【讨论】:

      【解决方案2】:

      我在你的字符串上尝试了很多,但从未得到结果。控制台上只有 nil 显示。但是当我从你的字符串中删除字符“T”时,它会给出完美的结果。

      [f setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
      NSDate *date = [f dateFromString:@"2012-01-12 21:01:00"];
      NSLog(@"date %@", date);
      NSDateFormatter *f2 = [[NSDateFormatter alloc] init];
      [f2 setDateFormat:@"dd-MM-yyyy"];
      NSString *s = [f2 stringFromDate:date];
      NSLog(@"S %@", s);
      /// OutPut : S 12-01-2012
      

      【讨论】:

        猜你喜欢
        • 2023-03-25
        • 2011-11-25
        • 2012-07-08
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-10
        • 1970-01-01
        相关资源
        最近更新 更多