你好,我在这个网站上看到了很多NSDate比较,但是它们看起来都很复杂,因为我只需要知道现在的日期是下午4点以后还是下午4点之前。
也许有什么简单的方法可以实现这个目标?
link
但它似乎很长很复杂,我只需要简单的回答下午4点以后。
- (BOOL)checkTime
{
NSDate* now = [NSDate date];
NSDate *endDate;
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
endDate = [formatter dateFromString:@"2012-12-07 16:00:00"];//well here I have a problem how do I set end day to today 4pm ?
NSLog(@"%d",[now compare:endDate]);
if([now compare:endDate] < 0)
return YES;
else if([now compare:endDate] > 0)
return NO;
else
return NO;
}编辑:在答案之后,我想出了下面的代码
- (BOOL)checkTime
{
NSDate *date = [NSDate date];
NSDateFormatter *df = [NSDateFormatter new];
[df setDateFormat:@"HH"];
int intS =9;
NSInteger HourStart = intS;
NSInteger hour = [[df stringFromDate:date] integerValue];
int hourE = 16;
NSInteger HourEnd = hourE;
if((hour >HourStart) && (hour < HourEnd))
return YES;
else
return NO;
}目前,它运行良好,但我不确定它是否会在另一个日历集上工作等等。
发布于 2013-12-10 10:58:51
以下将给你一个小时:
NSDate *now = [NSDate date];
NSDateFormatter *df = [NSDateFormatter new];
[df setDateFormat:@"hh"];
NSInteger hour = [[df stringFromDate:now] integerValue];注意:
如果您只想检查4,那么使用hh,如果是16,那么使用HH。
或者简单地说,HH的24小时格式。
发布于 2013-12-10 11:21:53
通常,我更喜欢使用NSDateComponents和NSCalendar来进行这类日历计算,因为您不知道用户使用的是什么日历。
下面是一种在NSDate上使用date组件在类别中进行比较的方法:
#import <Foundation/Foundation.h>
@interface NSDate (Foo)
- (BOOL)isAfterFourPM;
@end
@implementation NSDate (Foo)
- (BOOL)isAfterFourPM {
unsigned int flags = NSHourCalendarUnit;
NSDateComponents *comps = [[NSCalendar currentCalendar] components:flags fromDate:self];
return (comps.hour >= 16);
}
@end
int main(int argc, char *argv[]) {
@autoreleasepool {
NSDate *now = [NSDate date];
NSLog(@"is after 4 PM? - %@",([now isAfterFourPM]?@"YES":@"NO"));
// let's try with a different time (17h)
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
flags |= NSHourCalendarUnit;
NSDateComponents *currentComps = [[NSCalendar currentCalendar] components:flags fromDate:now];
currentComps.hour = 17;
NSDate *afterFourDate = [[NSCalendar currentCalendar] dateFromComponents:currentComps];
NSLog(@"is after 4 PM? - %@",([afterFourDate isAfterFourPM]?@"YES":@"NO"));
}
}这些指纹:
2013-12-10 05:16:05.921 Untitled 2[43453:507] is after 4 PM? - NO
2013-12-10 05:16:05.921 Untitled 2[43453:507] is after 4 PM? - YES(中央时间上午5时)
在这种情况下,您所需要做的就是使用当前日历从日期获取NSHourCalendarUnit组件,并将NSDateComponents上的hour属性与16进行比较。
https://stackoverflow.com/questions/20492435
复制相似问题