【问题标题】:iOS: How to Get A Device's Current Time To Perform An Action? [duplicate]iOS:如何获取设备执行操作的当前时间? [复制]
【发布时间】:2014-04-03 01:49:48
【问题描述】:

获取用户当前时间(下午 12:00 等)以执行操作的最佳方式是什么?我有一个游戏,如果用户的当前时间在晚上 8 点到凌晨 5 点之间,我想显示夜间图像。

【问题讨论】:

标签: ios objective-c ios7 nstimer


【解决方案1】:
NSDate *currentTime = [NSDate date];

NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
[timeFormatter setDateFormat:@"HH"];

NSString *hourCountString = [timeFormatter stringFromDate:currentTime];

int hourCountInt = [hourCountString intValue];

//time between 8PM - 5AM.
if(hourCountInt > 20 || hourCountInt < 5)
{
    NSLog(@"display night-time images");
}

【讨论】:

  • 日期格式化程序的性能不是很好。改为使用NSDateComponents 提取您需要的值(并且它们已经是int,无需转换)。
【解决方案2】:
NSDate *currentTime = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh-mm"];
NSString *resultString = [dateFormatter stringFromDate: currentTime];

【讨论】:

    【解决方案3】:

    直道是:

    NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSCalendarUnit unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;
    NSDate *date = [NSDate date];
    NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
    
    NSInteger hour = [dateComponents hour];
    NSInteger minute = [dateComponents minute];
    

    我确实喜欢辅助函数,所以如果您需要更频繁地使用此函数并希望保持代码简洁,您可以这样做:

    - (void) getHour:(NSInteger *)hour andMinute:(NSInteger *)minute fromDate:(NSDate *)date
    {
        NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
        NSCalendarUnit unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;
        NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
    
        *hour = [dateComponents hour];
        *minute = [dateComponents minute];
    }
    

    然后像这样调用函数,其中小时和分钟可以是常见的类变量:

    NSInteger hour, minute;
    NSDate *date = [NSDate date];
    [self getHour:&hour andMinute:&minute fromDate:date];
    

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 2017-10-01
      相关资源
      最近更新 更多