【发布时间】:2016-09-06 13:30:20
【问题描述】:
以下代码应该将当前年份设置为第一天:
import UIKit
private func getYearStartDate() -> NSDate {
let calendar = NSCalendar.currentCalendar()
var date = calendar.dateBySettingHour(0, minute: 0, second: 0, ofDate: NSDate(), options: [])
date = calendar.dateBySettingUnit(.Month, value: 1, ofDate: date!, options: [])
date = calendar.dateBySettingUnit(.Day, value: 1, ofDate: date!, options: [])
return date!
}
print("startdate=\(getYearStartDate())")
print("enddate=\(NSDate())")
但是当我检查它时,该值设置为下一年的第一天。
我的结果:
startdate=2017-01-01 02:00:00 +0000
enddate=2016-09-06 13:44:06 +0000
我期望的结果:
startdate=2016-01-01 02:00:00 +0000
enddate=2016-09-06 13:44:06 +0000
【问题讨论】:
-
那么你得到了什么价值?它为我提供了正确的结果。您是否知道
print(date)以 UTC 而不是您当地的时区打印日期? -
我在我的问题中包含了这些值。
print中的 UTC 实际上不是问题。 -
什么是开始日期,结束日期?请发布一个可重复的、独立的示例,包括打印语句。
-
dateBySettingUnit可以更改“更高”的组件,所以是的,您的方法可能会失败。