【问题标题】:iPhone: how to convert nsstring to nsdateiPhone:如何将 nsstring 转换为 nsdate
【发布时间】:2012-12-25 19:04:06
【问题描述】:

我想把这个字符串转成nsdate

“2012-12-25T18:58:57.649Z”

我知道如何将 nsstring 转换为 nsdate,但我找不到正确的格式。我设置了以下格式,但它不起作用。请推荐

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    //[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehaviorDefault];
    [dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss"];

【问题讨论】:

  • 您忘记在格式化程序中添加 ms
  • 我用过这个 [dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss.msZ"];还有这个 [dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss.ms"]; .两种格式都不起作用
  • NSString to NSDate 的可能重复项

标签: nsstring nsdate


【解决方案1】:

希望有帮助

- (NSDate *)dateFromISO8601:(NSString *)str{
   if(![str isKindOfClass:NSString.class]){
      return nil;
   }

   static NSDateFormatter* sISO8601 = nil;

   if (!sISO8601) {
      sISO8601 = [[NSDateFormatter alloc] init];
      [sISO8601 setTimeStyle:NSDateFormatterFullStyle];
      [sISO8601 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.S"];
      [sISO8601 setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
  }
  if ([str hasSuffix:@"Z"]) {
      str = [str substringToIndex:(str.length-1)];
  }

  NSDate *d = [sISO8601 dateFromString:str];
  return d;
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2011-04-24
    • 2017-04-23
    • 2021-09-11
    相关资源
    最近更新 更多