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

LIA*_*IAL 10 nsdate ios

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

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

感谢你的帮助.

问候,亚历克斯.

Kev*_*vin 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];
Run Code Online (Sandbox Code Playgroud)

  • @LIAL NSDate对象不包含时区 - 它始终与UTC相关. (2认同)