2011-08-04 71 views
10

我可以找到如何得到一個日期是否在一個範圍內,但我看不出如何在特定時間創建一個日期。查找當前時間是否在一個範圍內

如果[NSDate date]在時間範圍之內,最簡單的方法是什麼?

我要顯示個性化的問候像下面這樣:

12點 - 4:59:9999點@ 「下午好,富」
下午5時 - 11:59:9999點@」晚上好,富」
上午12點 - 11:59:9999上午@‘早上好,富’

回答

49

是的,你可以使用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,但是答案很好。 –

1

使用NSCalendar實例來創建一個NSDateComponents比如你的NSDate的,那麼就檢查時,分和012的秒屬性並提供適當的信息。

-1

你可以只使用類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

2

更新了雨燕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") 
} 
0

中午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!"); 
相關問題