【问题标题】:Objective C - Generate an array of time objects with an interval of X mins?Objective C - 生成间隔为 X 分钟的时间对象数组?
【发布时间】:2015-02-20 14:21:40
【问题描述】:

我想创建一个 24 小时制的时间对象数组,每个对象之间的间隔为 X 分钟;并且应该验证为 NSDate/NSTime 对象。

ie:生成的输出

00:00, 00:30, 01:00, 01:30, etc

我希望时间对象可以针对 NSDates 进行验证。

我在想我们有一系列 NSDates,但我不知道如何在不超过 24 小时的情况下使每一个与前一个相距 X 分钟。

非常感谢


编辑:第一次尝试

好的,根据下面的答案,我已经尝试过了

      NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
        components.timeZone = [NSTimeZone localTimeZone];
        components.hour =  11;
        components.minute = 0;
        components.second = 0;

        NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:components];


        NSDateFormatter *timeFormatter = [NSDateFormatter vic_timeFormatter];
        [timeFormatter setTimeZone:[NSTimeZone localTimeZone]];

        for (int i=1; i<48; i++) {

            NSUInteger seconds = (1800 * i);
            NSDate *newDate= [NSDate dateWithTimeInterval:seconds sinceDate:date];
            NSLog(@"newDate = %@", newDate);
            NSString *formatted = [timeFormatter stringFromDate:newDate];
            NSLog(@"Formatted = %@", formatted);
        }

        timeFormatter=nil;

我选择了 48,因为 1800 在 24 小时制中出现了 48 次

除了在我的日志中,它总是在 10:30 左右结束

理想情况下,我希望它运行到晚上 11:30 或 12:00;无论时间从什么时候开始(在上述场景中,它从上午 11 点开始)

日志返回如下;

newDate = 2015-02-20 11:30:00 +0000
Formatted = 11:30 AM
newDate = 2015-02-20 12:00:00 +0000
Formatted = 12:00 PM
newDate = 2015-02-20 12:30:00 +0000
Formatted = 12:30 PM
newDate = 2015-02-20 13:00:00 +0000
Formatted = 1:00 PM
newDate = 2015-02-20 13:30:00 +0000
Formatted = 1:30 PM
newDate = 2015-02-20 14:00:00 +0000
Formatted = 2:00 PM
newDate = 2015-02-20 14:30:00 +0000
Formatted = 2:30 PM
newDate = 2015-02-20 15:00:00 +0000
Formatted = 3:00 PM
newDate = 2015-02-20 15:30:00 +0000
Formatted = 3:30 PM
newDate = 2015-02-20 16:00:00 +0000
Formatted = 4:00 PM
newDate = 2015-02-20 16:30:00 +0000
Formatted = 4:30 PM
newDate = 2015-02-20 17:00:00 +0000
Formatted = 5:00 PM
newDate = 2015-02-20 17:30:00 +0000
Formatted = 5:30 PM
newDate = 2015-02-20 18:00:00 +0000
Formatted = 6:00 PM
newDate = 2015-02-20 18:30:00 +0000
Formatted = 6:30 PM
newDate = 2015-02-20 19:00:00 +0000
Formatted = 7:00 PM
newDate = 2015-02-20 19:30:00 +0000
Formatted = 7:30 PM
newDate = 2015-02-20 20:00:00 +0000
Formatted = 8:00 PM
newDate = 2015-02-20 20:30:00 +0000
Formatted = 8:30 PM
newDate = 2015-02-20 21:00:00 +0000
Formatted = 9:00 PM
newDate = 2015-02-20 21:30:00 +0000
Formatted = 9:30 PM
newDate = 2015-02-20 22:00:00 +0000
Formatted = 10:00 PM
newDate = 2015-02-20 22:30:00 +0000
Formatted = 10:30 PM
newDate = 2015-02-20 23:00:00 +0000
Formatted = 11:00 PM
newDate = 2015-02-20 23:30:00 +0000
Formatted = 11:30 PM
newDate = 2015-02-21 00:00:00 +0000
Formatted = 12:00 AM
newDate = 2015-02-21 00:30:00 +0000
Formatted = 12:30 AM
newDate = 2015-02-21 01:00:00 +0000
Formatted = 1:00 AM
newDate = 2015-02-21 01:30:00 +0000
Formatted = 1:30 AM
newDate = 2015-02-21 02:00:00 +0000
Formatted = 2:00 AM
newDate = 2015-02-21 02:30:00 +0000
Formatted = 2:30 AM
newDate = 2015-02-21 03:00:00 +0000
Formatted = 3:00 AM
newDate = 2015-02-21 03:30:00 +0000
Formatted = 3:30 AM
newDate = 2015-02-21 04:00:00 +0000
Formatted = 4:00 AM
newDate = 2015-02-21 04:30:00 +0000
Formatted = 4:30 AM
newDate = 2015-02-21 05:00:00 +0000
Formatted = 5:00 AM
newDate = 2015-02-21 05:30:00 +0000
Formatted = 5:30 AM
newDate = 2015-02-21 06:00:00 +0000
Formatted = 6:00 AM
newDate = 2015-02-21 06:30:00 +0000
Formatted = 6:30 AM
newDate = 2015-02-21 07:00:00 +0000
Formatted = 7:00 AM
newDate = 2015-02-21 07:30:00 +0000
Formatted = 7:30 AM
newDate = 2015-02-21 08:00:00 +0000
Formatted = 8:00 AM
newDate = 2015-02-21 08:30:00 +0000
Formatted = 8:30 AM
newDate = 2015-02-21 09:00:00 +0000
Formatted = 9:00 AM
newDate = 2015-02-21 09:30:00 +0000
Formatted = 9:30 AM
newDate = 2015-02-21 10:00:00 +0000
Formatted = 10:00 AM
newDate = 2015-02-21 10:30:00 +0000
Formatted = 10:30 AM

【问题讨论】:

  • 将你的 for 循环更新为 i
  • 非常感谢。但有时它会持续到第二天;而我认为它可能不应该这样做

标签: objective-c arrays time nsdate


【解决方案1】:

尝试使用 dateWithTimeInterval 方法。示例

NSDate *newDate= [NSDate dateWithTimeInterval:1800 sinceDate:yourDate];

【讨论】:

  • 这很好,很有帮助;我相信我需要将 1800 发射至少 48 次 48 次
猜你喜欢
  • 2017-01-10
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2020-07-06
  • 2022-01-25
相关资源
最近更新 更多