【问题标题】:NSDate with NSDateFormatter returns nil dateNSDate 和 NSDateFormatter 返回 nil 日期
【发布时间】:2013-05-24 18:27:59
【问题描述】:

我想将字符串转换为 NSDate,如下所示:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateStyle:NSDateFormatterFullStyle];
NSDate *createdAt = [dateFormat dateFromString:[value valueForKey:@"created_at"]];

当我登录 createdAt 时,它出于某种原因返回 nil,我不知道为什么。

[value valueForKey:@"created_at"]];
Returns a NSCFString that looks like this:
2013-05-15T05:55:57Z

我不知道为什么它是零,任何帮助将不胜感激!

【问题讨论】:

  • 你确定 [value valueForKey] 不是 nil 吗?
  • 它是什么样子的?可能解析器真的解析不出来
  • 您必须为您的字符串设置正确的格式[dateFormat setDateFormat:...],在 SO 上有很多关于此的问题和答案。 - 但是你已经标记了这个“核心数据”,所以如果value 是一个核心数据对象,那么你应该存储一个日期属性而不是一个字符串。
  • 嗨,谢谢@MartinR,您对日期格式应如何查找字符串2013-05-15T05:55:57Z 有什么建议吗? :)
  • 所以你想要一个日期到一个字符串而不是一个字符串到一个日期?

标签: ios cocoa-touch nsdate nsdateformatter


【解决方案1】:

您应该首先将日期格式设置为NSDateFormatter。这应该工作:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *createdAt = [dateFormat dateFromString:[value valueForKey:@"created_at"]];

但是我不确定您输入的日期字符串。最后一个字母Z 应该是日期的时区标识。字母Z 是根据Unicode Date Format Patterns (http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns) 的时区格式说明符。

【讨论】:

    猜你喜欢
    • 2014-03-11
    • 1970-01-01
    • 2016-02-23
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多