我有这段代码:
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模拟器上测试了它
答案 0 :(得分:0)
为什么日期错了?
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,然后在GMT + 0时间,1小时后。因此,testDate持有22/12/1968 00:10:40
NSDate testDate = form.dateFromString(d)!
为什么不打印相同的格式? 因为您没有使用NSDateFormatter对象来获取日期字符串,但您使用print()直接打印对象NSDate的描述。