我以这种形式从MySql数据库获取日期:
dd/MM/yyyy HH:mm:ss
例如:19/09/2015 14:39:18
我想在Swift中的NSDate对象中转换此字符串,因此我确实喜欢这样:
var d = "19/09/2015 14:39:18"
var form : NSDateFormatter = NSDateFormatter()
form.dateFormat = "dd/MM/yyyy HH:mm:ss"
print(form.dateFromString(d)!)
但是我最后打印出来了:
2015-09-19 12:39:18 +0000
怎么了?
答案 0 :(得分:0)
您需要告诉NSDateFormatter
格式为GMT时区的传入日期字符串:
var d = "19/09/2015 14:39:18"
var form : NSDateFormatter = NSDateFormatter()
form.timeZone = NSTimeZone(name: "GMT")
form.dateFormat = "dd/MM/yyyy HH:mm:ss"
print(form.dateFromString(d)!)
打印:
"2015-09-19 14:39:18 +0000"
如果省略手动设置timeZone
属性,NSDateFormatter
将继承当前系统时区,并将其解析为 local 格式时。然后,当您打印新的NSDate
对象时,它将以GMT显示,从而产生偏移。
修改:拥有NSDate
对象后,您可以使用相同的格式化工具将返回转换为具有相同格式的字符串表示形式:< / p>
var d = "19/09/2015 14:39:18"
var form : NSDateFormatter = NSDateFormatter()
form.timeZone = NSTimeZone(name: "GMT")
form.dateFormat = "dd/MM/yyyy HH:mm:ss"
form.stringFromDate(form.dateFromString(d)!) // "19/09/2015 14:39:18"