【问题标题】:How to set UIDatePicker's date's seconds value to 00?如何将 UIDatePicker 日期秒值设置为 00?
【发布时间】:2023-03-08 04:33:02
【问题描述】:

如何始终获取 UIDatePicker 日期的秒值“00”?

现在我得到了这种格式5:30:45 的值,我需要得到这种格式的时间5:30:00

如何做到这一点?

【问题讨论】:

    标签: ios objective-c cocoa-touch nsdate uidatepicker


    【解决方案1】:

    Swift 4 版本:

     let calendar = NSCalendar.current
     let components = calendar.dateComponents([.year, .month, .day,
                                               .hour, .minute], 
                                               from: yourDate)
     let date = calendar.date(from: components)
    

    【讨论】:

    • 您的答案在组件中缺少.month
    • 谢谢你,修复它
    【解决方案2】:

    在 Swift 中:

    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components([.Year, .Month, .Day, .Hour, .Minute], fromDate: datePicker.date)
    let date = calendar.dateFromComponents(components)
    

    【讨论】:

      【解决方案3】:

      您不必处理 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
      

      【讨论】:

      • NSMinuteCalendarUnit 在 iOS 8 中贬值了。你有什么替代方法来实现同样的事情吗?
      • NSCalenderUnitMinute 也许?
      • 根据NSCalendar.h,自动补全应该告诉你:NSMinuteCalendarUnit NS_CALENDAR_ENUM_DEPRECATED(10_4, 10_10, 2_0, 8_0, "Use NSCalendarUnitMinute instead") = NSCalendarUnitMinute
      【解决方案4】:

      我使用了这段代码,它工作正常。

      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];  
      

      【讨论】:

      • 向你致敬——很明显,其他受访者都没有理解这个问题。我有同样的问题:日期选择器只显示小时和分钟,但它返回非零秒。 7:55:59 与 7:55 不同,额外的 59 秒会打乱后续计算。
      【解决方案5】:
      NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];
      [dateformatter setDateFormat:@"ss"];
      NSLog(@"%@",[dateformatter stringFromDate:[datePicker date]]);
      

      【讨论】:

        【解决方案6】:
        NSDate *currentDate = [datePicker date];    
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"ss"];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
        NSString *Str_Seccond=[dateFormatter stringFromDate:currentDate];
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多