【问题标题】:Get the future time as NSDate获取未来时间作为 NSDate
【发布时间】:2013-03-23 15:09:18
【问题描述】:

我有一个日期选择器。从中选择时间后,我想获取下一个 30 分钟和 1 小时的日期和时间。

我将如何编写一个方法来获取日期和时间,并在该日期时间之后的 30 分钟和 1 小时内以两个 NSDate 的形式返回。

示例:我从日期选择器中选择了下午 1:30 的时间,然后我想获取下一个 30 分钟时间和 1 小时时间并设置时间。

有人可以帮忙吗?

【问题讨论】:

  • 使用NSDateComponents
  • NSDateComponents 对于添加天或月等间隔很有用,因为这些间隔没有固定长度。要增加 30 分钟,dateByAddingTimeInterval 应该足够了。

标签: objective-c datetime nscalendar


【解决方案1】:
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [NSDateComponents new];
    components.minute = 30;
    components.hour = 1;
    NSDate *date = [calendar dateByAddingComponents:components toDate:< your date > options:0];

【讨论】:

    【解决方案2】:

    您可以只使用NSDate 的 dateByAddingTimeInterval 方法。

    例子:

    NSDate *NextDateOneHour = [oldDate dateByAddingTimeInterval:3600];    //3600 second equivalent to 60 mins
    NSDate *NextDateHalfAnHour = [oldDate dateByAddingTimeInterval:1800]; //1800 second equivalent to 30 mins
    

    【讨论】:

      【解决方案3】:
      NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
      NSDateComponents *comps = [[NSDateComponents alloc] init];
      [comps setHour:1];
      
      NSDate *afterHour = [gregorian dateByAddingComponents:comps toDate:[NSDate date]  options:0];
      
      [comps setMinute:30];
      
      NSDate *afterHalfHour = [gregorian dateByAddingComponents:comps toDate:[NSDate date]  options:0];
      

      【讨论】:

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