查找当前时间是否在范围之间

时间:2011-08-04 17:03:40

标签: iphone objective-c ios nsdate

如果日期介于范围之间,我可以找到如何获得,但我似乎无法在特定时间创建日期。

查看[NSDate日期]是否介于某个时间范围内最简单的方法是什么?

我想显示如下的个性化问候语:

  

12 pm - 4:59:9999 pm @“下午好,foo”
  下午5点 - 11:59:9999 @“晚上好,foo”
  上午12点 - 11:59:9999上午@“早上好,foo”

5 个答案:

答案 0 :(得分:51)

是的,您可以使用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");

Swift 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")
}

答案 1 :(得分:2)

针对Swift 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")
}

答案 2 :(得分:1)

使用NSCalendar实例从NSDateComponents创建NSDate个实例,然后只需检查NSDateComponents的小时,分​​钟和秒属性,并提供相应的消息。

答案 3 :(得分:0)

中午位于 12:00 PM 下午 12:01 PM 5:00 PM 晚上下午5:01 晚上8点,或在日落时分。 夜晚是从日落到日出,所以从 8:01 PM到 5:59 AM。

object

答案 4 :(得分:-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