查找当前时间是否在一个范围内

查找当前时间是否在一个范围内

问题描述:

我可以找到如何得到一个日期是否在一个范围内,但我看不出如何在特定时间创建一个日期。查找当前时间是否在一个范围内

如果[NSDate date]在时间范围之内,最简单的方法是什么?

我要显示个性化的问候像下面这样:

12点 - 4:59:9999点@ “下午好,富”
下午5时 - 11:59:9999点@”晚上好,富”
上午12点 - 11:59:9999上午@‘早上好,富’

是的,你可以使用NSDateComponents这将返回24小时格式的小时。

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSHourCalendarUnit fromDate:[NSDate date]]; 
NSInteger hour = [components hour]; 

if(hour >= 0 && hour < 12) 
    NSLog(@"Good morning, foo"); 
else if(hour >= 12 && hour < 17) 
    NSLog(@"Good afternoon, foo"); 
else if(hour >= 17) 
    NSLog(@"Good evening, foo"); 

斯威夫特3

let hour = Calendar.current.component(.hour, from: Date()) 

if hour >= 0 && hour < 12 { 
    print("Good Morning") 
} else if hour >= 12 && hour < 17 { 
    print("Good Afternoon") 
} else if hour >= 17 { 
    print("Good Evening") 
} 
+0

不幸的是,我今天的票数不足。不错,但答案。 –

+2

我不是没票。 +1。 –

+0

从iOS8开始,你需要使用NSCalendarUnitHour,但是答案很好。 –

使用NSCalendar实例来创建一个NSDateComponents比如你的NSDate的,那么就检查时,分和012的秒属性并提供适当的信息。

你可以只使用类NSDate抢在iPhone上的时间。

NSDate * today = [NSDate date]; 
NSCalendar * cal = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar]; 

NSDateComponents * comps = [cal components:NSHourCalendarUnit fromDate:today]; 

if ([comps hour]>0 && [comps hour] < 12) 
    NSLog(@"Good morning, foo"); 

if ([comps hour] > 12 && [comps hour] < 17) 
    NSLog(@"Good afternoon, foo"); 

if ([comps hour] >17 && [comps hour]<24 ) 
    NSLog(@"Good evening, foo"); 

参考:NSDate Documentation

+1

因此,下午12:00至12:59.9999和下午5点以及5:59.9999下午将发生什么? :) – Joe

+0

大声笑............... – Legolas

更新了雨燕3.0

let hour = Calendar.current.component(.hour, from: Date()) 

if hour >= 0 && hour < 12 { 
    print("Good Morning") 
} else if hour >= 12 && hour < 17 { 
    print("Good Afternoon") 
} else if hour >= 17 { 
    print("Good Evening") 
} 

中午12:00 PM下午12:01 PM到约5:00 PM晚上是从下午5:01晚上8点,或在日落前后。 夜景从日落到日出,所以从8:01 PM直到5:59 AM。

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitHour fromDate:[NSDate date]]; 
[components setTimeZone:[NSTimeZone localTimeZone]]; 
NSInteger hour = [components hour]; 

if(hour >= 6 && hour < 12) 
    NSLog(@"Good morning!"); 
else if(hour >= 12 && hour < 17) 
    NSLog(@"Good afternoon!"); 
else if(hour >= 17 && hour < 20) 
    NSLog(@"Good evening!"); 
else if((hour >= 20) || (hour >= 0 && hour < 6)) 
    NSLog(@"Good night!");