【发布时间】:2014-04-03 01:49:48
【问题描述】:
获取用户当前时间(下午 12:00 等)以执行操作的最佳方式是什么?我有一个游戏,如果用户的当前时间在晚上 8 点到凌晨 5 点之间,我想显示夜间图像。
【问题讨论】:
标签: ios objective-c ios7 nstimer
获取用户当前时间(下午 12:00 等)以执行操作的最佳方式是什么?我有一个游戏,如果用户的当前时间在晚上 8 点到凌晨 5 点之间,我想显示夜间图像。
【问题讨论】:
标签: ios objective-c ios7 nstimer
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,无需转换)。
NSDate *currentTime = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh-mm"];
NSString *resultString = [dateFormatter stringFromDate: currentTime];
【讨论】:
直道是:
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];
【讨论】: