2016-07-12 125 views
0

我想转换UTC日期为swift中的本地日期,但在得到UTC后字符串中的本地日期我将该字符串转换为NSDate中的一次,但我总是得到UTC日期格式下面是我的代码UTC的日期在swift iOS中的本地日期

日期:在UTC:二零一六年七月二十日18:30:00 +0000

我想这个日期在当地的日期,选中下面的代码:

let dateInUTC = NSDate() 
     let seconds: Int = NSTimeZone.systemTimeZone().secondsFromGMT 
     print(seconds) 
     let localDateFormatter: NSDateFormatter = NSDateFormatter() 
     localDateFormatter.dateFormat = "MM/dd/yyyy HH:mm" 
     localDateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: seconds) 
     let lastDate: String = localDateFormatter.stringFromDate(dateInUTC) 
     print(lastDate) 

在这个时候我得到“07/12/2016 16:56:36 GMT + 5:30”,意思是我得到的字符串本地日期,但我想这个日期的NSDate所以我再次转换成NSDate的这串日期,检查以下

let getDate:NSDate = localDateFormatter.dateFromString(lastDate)! 
    print(getDate) 

但在这个阶段,我再次得到了在UTC日期(2016年7月12日11: 26:36 +0000),但我想在本地日期,

  • 我尝试了很多的雨燕次,但没有从字符串获得本地日期,这行代码我在Objective-C的应用,其工作的罚款obj-c但是当我在swift中尝试时,我总是得到UTC日期,建议我并给我正确的方式来解决这个问题。
+2

NSDate代表绝对时间点并且没有时区。这已被反复询问和回答。 –

+0

那么如何获得当地时区的NSDate? (注意:不是字符串,它应该在NSDate中) –

+0

这个问题没有意义,NSDate只是自2001年1月1日GMT以来的秒数。看例如http://stackoverflow.com/questions/24917483/swift-nsdate-utc-time-and-local-tme或http://stackoverflow.com/questions/18124684/nsdate-change-time-zone。 NSDate的* description *方法使用UTC将日期显示为字符串。 –

回答

1

NSDates不保存时区信息。检索时,您始终必须使用带有时区的dateFormatter。