我试图操纵Swift中的Date。我想要的是将实际日期的小时,分钟和秒设置为零。
func getDate() -> (NSDate){
let date: NSDate = NSDate()
var components = NSDateComponents()
components.setValue(0, forComponent: NSCalendarUnit.CalendarUnitHour);
components.setValue(0, forComponent: NSCalendarUnit.CalendarUnitMinute);
components.setValue(0, forComponent: NSCalendarUnit.CalendarUnitSecond);
let expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: date, options: NSCalendarOptions(rawValue: 0))
return expirationDate!
}
这是我的代码如此战争,但它不起作用。任何提示? 输入将是" 2015-07-30 18:31:08 + 0000" outpout应该是" 2015-07-30 00:00:00 + 0000"
答案 0 :(得分:2)
有一种NSCalendar
方法可以完成您将要完成的任务(10.9及更高版本)
func getDate() -> NSDate {
return NSCalendar.currentCalendar().startOfDayForDate(NSDate())
}
明天开始,你可以使用这个
let today = getDate()
let addOneDay = NSDateComponents()
addOneDay.day = 1
let tomorrow = NSCalendar.currentCalendar().dateByAddingComponents(addOneDay, toDate:today, options:NSCalendarOptions())!
答案 1 :(得分:1)
以下是您的需求(特别是components:fromDate:
来电):
func getDate() -> NSDate {
let date: NSDate = NSDate()
let calendar = NSCalendar.currentCalendar()
var components = calendar.components(NSCalendarUnit.CalendarUnitDay | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitYear, fromDate: date)
return calendar.dateFromComponents(components)!
}
此调用适用于iOS 2.0之后的任何iOS系统,因此兼容性应该不是问题。