我尝试使用此Swift代码获取当前日期,而不是小时和分钟:
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitYear | .CalendarUnitMonth | .CalendarUnitDay, fromDate: NSDate())
println(components)
let date = calendar.dateFromComponents(components)
println(date)
我使用println
得到的结果对我来说有点混乱:
<NSDateComponents: 0x7fb5ad867700>
Calendar Year: 2015
Month: 7
Leap month: no
Day: 2
2015-07-01 22:00:00 +0000
components
是2015-07-02 bute,结果date
是2015-07-01 22:00:00
我的错误在哪里?
提到NSDateFormatter
,结果很好:
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.LongStyle
dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
println(dateFormatter.stringFromDate(date!))
结果:
July 2, 2015 at 12:00 AM
答案 0 :(得分:0)
推进是description
的工作方式。它使用NSDate
的{{1}}方法,并返回以GMT(UTC)为参考的数据。因此,您将看到基于您与GMT的时区偏差的差异。
在输出&#34; 2015-07-01 22:00:00 + 0000&#34;注意结尾&#34; + 0000&#34;这是时区偏移,即GMT,而不是您的时区。
结果是使用日期格式化程序并指定时区,对于设备的时区,您可以使用系统时区:[NSTimeZone systemTimeZone]
或NSTimeZone.systemTimeZone()
用于Swift。