如何在NSDate变量中只设置时间?

时间:2013-07-15 16:39:46

标签: ios nsdate

我有NSDate变量,并且只想更改时间(日期不应该更改)。有可能吗?

例如:用户在DatePicker日期选择日期间隔(如果它的开始日期我想将时间设置为00:00:00,如果它的结束日期,我将时间设置为23:59 :59)

感谢大家的帮助。

此致,Alex。

3 个答案:

答案 0 :(得分:30)

您需要使用NSDateComponents

NSDate *oldDate = datePicker.date; // Or however you get it.
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |  NSCalendarUnitDay;
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components:unitFlags fromDate:oldDate];
comps.hour   = 23;
comps.minute = 59;
comps.second = 59;
NSDate *newDate = [calendar dateFromComponents:comps];

答案 1 :(得分:4)

无法更改NSDate对象。

您可以从中创建新的NSDate对象。看一下- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds方法。

NSDate *newDate = [endDate dateByAddingTimeInterval:24.0f * 60.0f * 60.0f - 1.0f];

答案 2 :(得分:0)

当我只需要跟踪时间时,我不使用NSDate或NSTimeInterval。相反,我使用NSinteger并存储“军事”时间,即0830 = 8:30 AM,14:15 = 2:15 PM。