我有以下代码:

var d = "22/12/1968 01:10:40"
var form : NSDateFormatter = NSDateFormatter()
form.dateFormat = "dd/MM/yyyy HH:mm:ss"
form.timeZone = NSTimeZone.localTimeZone() //Italy
print(form.dateFromString(d)!)


当我执行它时,我得到这个:

1968-12-22 00:10:40 +0000


第一件事为什么我最终会得到“ +0000”?为什么不尊重数据格式?

第二,时间错了。
就像时间是在伦敦的时间上设置的一样,但我却将其设置在我所在的当地时区(意大利)上。
我在iPhone Simulator上测试过

最佳答案

为什么日期不正确?

var d =“ 22/12/1968 01:10:40”
var form:NSDateFormatter = NSDateFormatter()
form.dateFormat =“ dd / MM / yyyy HH:mm:ss”

//直到这里,没有“问题”

form.timeZone = NSTimeZone.localTimeZone()//意大利//这意味着日期时间在意大利为22/12/1968 01:10:40(GMT +1)

//请记住,NSDate是绝对时间,否则它将保留GMT + 0时间。
//像现在一样,在意大利,时间是22/12/1968 01:10:40,然后在格林尼治标准时间+0时间,是1小时后。因此,testDate举行了22/12/1968 00:10:40

NSDate testDate = form.dateFromString(d)!
为什么它不能打印相同的格式?
因为您没有使用NSDateFormatter对象来获取日期字符串,而是使用print()直接打印出对象NSDate的描述。

10-08 12:16