【问题标题】:Removing time from date format从日期格式中删除时间
【发布时间】:2010-05-29 06:08:38
【问题描述】:

我正在开发一个应用程序,我使用 DatePicker 来选择日期,但它给了我带有时间的日期。我已经将该格式转换为字符串,现在我只想从中获取日期。我该怎么做。请给我一些建议。

以下是我的代码片段。

  NSDate *selected =[datePicker date];
  NSString *dateString = [NSString stringWithFormat:@"%@", selected];

这里的日期选择器是 UIDatePicker 的对象。

【问题讨论】:

    标签: iphone nsdate nscalendar


    【解决方案1】:

    您可以使用NSCalendar 获取日期的月、日和年组件,对其进行操作并重新组合它们。这是一些示例代码。

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit ) fromDate:date];
    
    [otherDateComponents setYear:[dateComponents year]];
    [otherDateComponents setMonth:[dateComponents month]];
    [otherDateComponents setDay:[dateComponents day]];
    
    NSDate *newDate = [calendar dateFromComponents:otherDateComponents];
    

    请注意,由于当前日历是特定于区域设置的,因此您返回的值不会在所有设备上都相同。您可能希望为您的目的指定一个特定的日历。 NSGregorianCalendar是西方最常用的一种。

    【讨论】:

      【解决方案2】:

      这是另一个解决方案:

      NSDate *selected =[datePicker date];
      NSDateFormatter *formatter = [NSDateFormatter new];
      
      [formatter setDateStyle:NSDateFormatterMediumStyle];
      NSDate *day = [formatter dateFromString:[formatter stringFromDate:selected]];
      [formatter release];
      

      【讨论】:

      • NSDateFormatterMediumStyle 是特定于语言环境的。虽然不太可能,但它可能不会返回您想要的字段。只要您可以假设公历,使用显式方法(例如接受的解决方案或自定义格式字符串)会更安全。
      猜你喜欢
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 2012-11-23
      • 2021-05-24
      • 2018-08-20
      • 2017-04-23
      • 2012-12-26
      相关资源
      最近更新 更多