How can I set only time in NSDate variable?

前端 未结 3 2283
执笔经年
执笔经年 2021-02-14 15:20

I have NSDate variable and would like to change only time (date shouldn\'t be changed). Is it possible ?

Eg: user pick date interval in DatePicker date (If it\'s start d

相关标签:
3条回答
  • 2021-02-14 15:41

    The NSDate object cannot be changed.

    You can create a new NSDate object from it. Take a look at the - (id)dateByAddingTimeInterval:(NSTimeInterval)seconds method.

    NSDate *newDate = [endDate dateByAddingTimeInterval:24.0f * 60.0f * 60.0f - 1.0f];
    
    0 讨论(0)
  • 2021-02-14 15:46

    You'll want to use 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];
    
    0 讨论(0)
  • 2021-02-14 15:47

    When I only need to track the time, I don't use NSDate or NSTimeInterval. Instead I use an NSinteger and store the "military" time, ie 0830 = 8:30 AM, 14:15 = 2:15 PM.

    0 讨论(0)
提交回复
热议问题