【问题标题】:NSDataDetector & NSDate returning current dateNSDataDetector & NSDate 返回当前日期
【发布时间】:2014-06-05 11:23:55
【问题描述】:

我正在尝试使用包含日期/时间的 NSString,并从中创建一个 NSDate 对象,以便我可以进行相应的操作。

我过去使用过 NSDataDetector 没有问题。但是,当我现在尝试时,detectedDate 正在返回当前日期,而不是在字符串中找到的日期。

有人可以解释为什么这不会像我过去使用的那样从字符串中返回日期吗?或者建议如何最好地实现这一目标?

非常感谢。

NSString *myDate = @"2014-03-13T12:31:00-07:00";

__block NSDate *detectedDate;

NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingAllTypes error:nil];
[detector enumerateMatchesInString:myDate
                           options:kNilOptions
                             range:NSMakeRange(0, [myDate length])
                        usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
 { detectedDate = result.date; } ];
NSLog(@"Result:%@",detectedDate);

【问题讨论】:

  • 我通过从字符串中删除“T”对此进行了快速测试,它捕获了正确的日期。除非您知道您在文本块中获得 ISO 格式日期(而不是某些格式化数据),否则您可能没问题。对于您知道要获取日期的格式化数据,我建议将 Peter Hosey's ISO 8601 NSDateFormatter 作为一个很好的解析选择。
  • 谢谢你。好地方!人们不一致地格式化数据的方式真是太棒了,不是吗?!再次感谢。
  • 随着“标准”的发展,ISO 8601 有很多选择...

标签: ios objective-c nsdate nsdatadetector


【解决方案1】:

查看 cmets 中@gaige 的回答,他说:-

我通过从字符串中删除“T”对此进行了快速测试,它捕获了正确的日期。除非您知道您在文本块中获得 ISO 格式日期(而不是某些格式化数据),否则您可能没问题。对于您知道要获取日期的格式化数据,我建议 Peter Hosey 的 ISO 8601 NSDateFormatter 作为一个很好的解析选择。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    相关资源
    最近更新 更多