如何将UIDatePicker的日期秒值设置为00?

iSa*_*ara 7 cocoa-touch objective-c nsdate uidatepicker ios

如何总是得到秒数值" 00" UIDatePicker的日期?

现在我正在获得像这种格式的价值5:30:45,我需要获得这种格式的时间5:30:00.

怎么做到这一点?

iSa*_*ara 13

我用这个代码它工作正常.

NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit ) fromDate:datePicker.date];
    NSDateComponents *timeComponents = [calendar components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:datePicker.date];

    [dateComponents setHour:[timeComponents hour]];
    [dateComponents setMinute:[timeComponents minute]];
    [dateComponents setSecond:0.0];

    NSDate *newDate = [calendar dateFromComponents:dateComponents];  
Run Code Online (Sandbox Code Playgroud)

  • 感谢你 - 显然没有其他受访者理解这个问题.我有同样的问题:日期选择器只显示小时和分钟,但它返回非零秒.7:55:59与7:55不一样,额外的59秒会使后续计算变得混乱. (3认同)

Vik*_*ica 7

您不必使用NSDateComponents或将日期转换为字符串并返回.您可以告诉日历将日期设置为分钟的开头(小时/日期/周/ ...)

NSDate *date = self.datePicker.date;
[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitMinute
                                startDate:&date
                                 interval:NULL
                                  forDate:date];
//date now is set to the beginning of the minute -> seconds == 00
Run Code Online (Sandbox Code Playgroud)


Muh*_*wan 4

NSDate *currentDate = [datePicker date];    
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
NSString *Str_Seccond=[dateFormatter stringFromDate:currentDate];
Run Code Online (Sandbox Code Playgroud)

在 Str_Seccond 字符串中,您可以获取字符串格式的秒。