该代码完全适用于我的模拟器,但现在面临的问题时,我的设备上运行,并更改时区以IST(印度标准时间)NSDateFormatter给了我错误的日期,当我选择IST从手机设置
运行的代码:
var zones = ["Asia/Calcutta","Asia/Hong_Kong"]
for eachtimeZone in zones{
println(eachtimeZone)
var nTZ:NSTimeZone = NSTimeZone(name: eachtimeZone)!
var dateFormatter: NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm a"
dateFormatter.timeZone = NSTimeZone(abbreviation: nTZ.abbreviation!)
println(dateFormatter.stringFromDate(NSDate()))
println(NSDate())
}
输出时,我使用模拟器:
Asia/Calcutta
06:11 AM
2014-10-29 00:41:36 +0000
Asia/Hong_Kong
08:41 AM
2014-10-29 00:41:36 +0000
输出当我手动设定的时间来IST
Asia/Calcutta
06:11 AM
2014-10-29 00:41:36 +0000
Asia/Hong_Kong
06:11 AM
2014-10-29 00:41:36 +0000
不工作的手机时设定:
什么是错误的代码?
使用的Xcode 6/iOS8上/ iPhone 5S
NB:加尔各答=加尔各答。一样的地方。
Update1:
Scenerio:通过设置将设备时间设置为印度标准时间(IST)。 然后我试着执行上述打印香港标准时间(HKT)和IST的代码。 由代码显示的HKT是错误的。
在上述测试中解释您的各种情况几乎是不可能的。 – 2014-10-29 01:14:20
这就是我的View Controller中唯一运行的代码。如果你只是把这段代码放在ViewDidLoad中,它就可以工作。我提供了配置和代码截图。请在提出有效问题之前向我询问详细信息。 – 2014-10-29 01:28:49
我们无法从您的描述中了解哪种情况在设备上运行,哪些情况在模拟器上运行,也无法告诉您设备是如何设置的。我们无法确定哪些时区“被占用”了,只有某些时区名称被iOS识别。在创建时区对象后,您应该记录时区对象的'secondsFromGMT'值。并确保您只使用来自'knownTimeZoneNames'的时区名称。 – 2014-10-29 01:37:36