2016-08-19 56 views
0

我在sqlite数据库中保存了一个日期。知道我尝试获得小时和分钟。从NSDate获取小时数

Europe/Berlin (GMT+2) offset 7200 (Daylight) 
2016-08-17 18:44:57 +0000 
the hour is 20 and minute is 44 
2016-08-18 18:44:57 +0000 
the hour is 20 and minute is 44 
2016-08-19 15:44:57 +0000 
the hour is 17 and minute is 44 
2016-08-18 16:44:57 +0000 
the hour is 18 and minute is 44 
2016-08-17 18:44:57 +0000 
the hour is 20 and minute is 44 
2016-08-18 18:44:57 +0000 
the hour is 20 and minute is 44 
2016-08-19 15:44:57 +0000 
the hour is 17 and minute is 44 
2016-08-18 16:44:57 +0000 
the hour is 18 and minute is 44 

的时区是正确的:就是工作时间由2

print(calendar.timeZone) 
while result.next() { 
       var hour = 0 
       var minute = 0 
       let calendar = NSCalendar.currentCalendar() 
       if #available(iOS 8.0, *) { 
        calendar.getHour(&hour, minute: &minute, second: nil, nanosecond: nil, fromDate: result.dateForColumn("time")) 
        print(result.dateForColumn("time")) 
        print("the hour is \(hour) and minute is \(minute)") 
       } 

      } 

我得到以下输出偏移。我尝试了另外两种解决方案。但它总是同样的问题。

+1

没有问题,输出是正确的。 'print(someDate)'用UTC打印,日期组件在你的本地时区。 –

回答

1

result.dateForColumn("time")UTC因为你有+0000而第二个输出是在另一个时区(Europe/Berlin (GMT+2)),所以日期是一样的。