NSDateFormatter how_to

NSDateFormatter how_to

我正在读取一个 JSON 对象,它包含一个 when 字段。 when 字段的格式为 "m-d-yyyy h:m:s"

例如,日期字符串可以是“5-25-2016 5:30:2”

由于我不知道m、d、h、m、s的长度,如何从这些字符串中得到一个NSDate?

编辑:使用评论中的一种工具,我取得了一些进展。该网站正确标识了日期(时移增加了 6 小时,但我可以解决这个问题)。但是,我的设备仍然存在问题。

let dateFrmtr = NSDateFormatter()
dateFrmtr.dateFormat = "MM-dd-yyyy HH:MM:SS"
dateFrmtr.locale = NSLocale(localeIdentifier: "en_US_POSIX")

print(dateFrmtr.dateFromString(mov["when"]! as! String)!) <-- prints "2016-10-08 01:00:00 +0000"
print(mov["when"]!) <-- prints "6-7-2016 19:10:3"

这不是正确的行为。

通过使用与您展示的几乎完全相同的内容!

let df = NSDateFormatter()
df.dateFormat = "M-d-yyyy H:m:s"
df.dateFromString("5-25-2016 5:30:2") // works
df.dateFromString("12-25-2016 15:30:22") // works as well

所有MsHdocs状态"Use one or two for zero padding",其他以同样的方式工作。这意味着:使用两个字母进行零填充,例如MM 代表 05 - 或只有一个字母代表省略前导零:M 代表 5。这对解析和输出日期都有效。

我为您所做的更改包括将第一个 M 更改为大写,因为这是几个月来的正确字母。小时数相同。

请注意,即使提供更多字母,解析也足够强大:

df.dateFormat = "MM-dd-yyyy HH:mm:ss"
df.dateFromString("1-5-2016 1:3:2") // works too

格式对于将日期转换回字符串更为重要!