从字符串到Nsdate Swift

从字符串到Nsdate Swift,swift,nsdate,Swift,Nsdate,我从MySql数据库中以以下形式获取日期: dd/MM/yyyy HH:mm:ss 例如:2015年9月19日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)!) 但我

我从MySql数据库中以以下形式获取日期:

dd/MM/yyyy HH:mm:ss
例如:2015年9月19日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
怎么了?

您需要告诉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将继承当前系统时区,并将其作为本地时间格式进行解析。然后,当您打印新的NSDate对象时,它将以GMT显示,从而产生偏移量

编辑:拥有NSDate对象后,可以使用相同的格式设置程序返回到具有相同格式的字符串表示形式:

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"

但这对我来说是错误的,因为我想要打印2015年9月19日14:39:18你是问小时偏移量吗?还是最后的+0000?如果是后者,您只需使用form.stringFromDate…我的问题是:我有一个格式为dd/MM/yyyy HH:MM:ss的字符串,例如19/09/2015 14:39:18,我想创建一个NSDate对象,它以相同的格式dd/MM/yyyy HH:MM:ss表示类似NSDate的字符串。在我的代码中,当我打印Nsdata对象时,它与输入字符串的格式不同。您是否尝试使用我建议的stringFromDate?可能重复