【发布时间】:2015-05-07 01:39:23
【问题描述】:
我现在对 NSDateFormatter 有一些问题。
当我将 dateStyle 设置为ShortStyle 时,如果我将模拟器的语言设置为简体中文,代码将起作用。如果我将日期设置为2015-04-20,它将显示15/4/20。根据documentation,这个结果是正确的。而且由于我设置了dateFormatter的locale,所以日期会以year/month/date的格式显示,符合中国人写日期的习惯。
短样式
指定一个简短的样式,通常只有数字,例如“11/23/37” 或“下午 3:30”。
如果我将模拟器的语言设置为日语,同样的代码会导致2015/04/20的结果。这与文档的描述不同,但它仍然有效。
但是,如果我将模拟器的语言设置为英文,同样的代码会导致错误。代码显示如下,错误为"fatal error: unexpectedly found nil while unwrapping an Optional value"。它指向let tmpStartDate: NSDate = dateFormatter.dateFromString(self.room!.startdate)!这一行
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let currentTimeZone: NSTimeZone = NSTimeZone.localTimeZone()
dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle
dateFormatter.timeZone = currentTimeZone
let locale = NSLocale.currentLocale()
dateFormatter.locale = locale
let tmpStartDate: NSDate = dateFormatter.dateFromString(self.room!.startdate)!
let start: String = dateFormatter.stringFromDate(tmpStartDate)
但这很奇怪。如果模拟器的语言是简体中文或日文(虽然有点不同),则将运行相同的代码和相同的日期。但是会导致英文的致命错误。
我不得不说self.room.startdate 不是零。它是从服务器获取的,在任何情况下都不会为零。我什至可以打印出来。
另外,在另一个视图中使用ShortStyle 的类似代码可以正常工作。我不知道为什么会这样。
有谁知道为什么会出现这个问题?如果我真的想使用NSDateFormatterStyle.ShortStyle,而不是将dateFormat直接设置为'yy/MM/dd',该如何解决?
【问题讨论】:
标签: ios iphone swift xcode6 nsdateformatter