【发布时间】:2016-03-13 10:36:37
【问题描述】:
我有许多德国日期,格式为“2016 年 2 月 10 日”,即 2 位数字表示日期,3 个字母表示月份,4 位数字表示年份。
我尝试使用日期格式dd.MMM.yyyy,但在 3 个德语月内都失败了:
- 2016 年 3 月 10 日
- 2016 年 6 月 10 日
- 2016 年 7 月 10 日
那是因为根据docs,MMM实际上代表“日期缩写”,它确实保证或暗示恰好三个字母。
我怎样才能解析一个恰好包含三个字母的日期,该月份可以用任何语言工作?这甚至可以用 NSDateFormatter 实现吗?
下面的代码说明了这个问题。它打印:
OK 10.Jan.2016
OK 10.Feb.2016
FAILED parsing: 10.Mär.2016
OK 10.Apr.2016
OK 10.Mai.2016
FAILED parsing: 10.Jun.2016
FAILED parsing: 10.Jul.2016
OK 10.Aug.2016
OK 10.Sep.2016
OK 10.Okt.2016
OK 10.Nov.2016
OK 10.Dez.2016
代码如下:
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")
dateFormatter.dateFormat = "dd.MMM.yyyy"
dateFormatter.locale = NSLocale(localeIdentifier: "de_DE")
let input = [
"10.Jan.2016",
"10.Feb.2016",
"10.Mär.2016",
"10.Apr.2016",
"10.Mai.2016",
"10.Jun.2016",
"10.Jul.2016",
"10.Aug.2016",
"10.Sep.2016",
"10.Okt.2016",
"10.Nov.2016",
"10.Dez.2016",
]
for test in input
{
if let date = dateFormatter.dateFromString(test)
{
print("OK \(test)")
}
else
{
print("FAILED parsing: \(test)")
}
}
【问题讨论】:
标签: parsing nsdate nsdateformatter