我在Playground中有以下代码:
import Cocoa
let date = NSDate()
let calendar = NSCalendar( calendarIdentifier:NSGregorianCalendar )
let components = calendar.components( NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate: date )
let dateStrippedOfTimeComponent:NSDate = calendar.dateFromComponents(components)
Playgrounds中的结果是2014年7月5日00:00这是我想要的
但是,当在我的viewController中用作功能的一部分时,相同的代码给出的结果为2014年7月4日23:00,并且当前的NSDate()结果比显示我的Mac早了一个小时。有人可以告诉我如何解决这个问题吗?非常感谢,谢谢。
这仅仅是一个显示问题。这两个日期对象完全相同,但是在打印结果时,游乐场和应用程序使用两个不同的时区。
NSDate
是时间的纯粹表示。
无论何时需要显示它,都可以决定格式,语言环境,时区和其他与可视化相关的信息。例如,您可以在操场上运行它:
let date = NSDate()
// "Jul 6, 2014, 11:43 AM" in my system timezone (Italy)
let calendar = NSCalendar( calendarIdentifier:NSGregorianCalendar )
let components = calendar.components( NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate: date )
let dateStrippedOfTimeComponent = calendar.dateFromComponents(components)
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
dateFormatter.timeStyle = NSDateFormatterStyle.MediumStyle
dateFormatter.timeZone = NSTimeZone(abbreviation: "EST")
let estDate = dateFormatter.stringFromDate(dateStrippedOfTimeComponent)
// "Jul 5, 2014, 6:00:00 PM" in NYC
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")
let utcDate = dateFormatter.stringFromDate(dateStrippedOfTimeComponent)
// "Jul 5, 2014, 10:00:00 PM" in London
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句