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
所有M
、s
和H
的docs状态"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
格式对于将日期转换回字符串更为重要!
我正在读取一个 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
所有M
、s
和H
的docs状态"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
格式对于将日期转换回字符串更为重要!