NSDateFormatter

时间:2015-12-22 09:49:21

标签: swift nsdateformatter

我有这段代码:

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模拟器上测试了它

1 个答案:

答案 0 :(得分:0)

  1. 为什么日期错了?

    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)!

  2. 为什么不打印相同的格式? 因为您没有使用NSDateFormatter对象来获取日期字符串,但您使用print()直接打印对象NSDate的描述。