Find if current time is between a range

前端 未结 5 1669
孤城傲影
孤城傲影 2021-02-08 11:22

I can find how to get if a date is between a range, but I cant seem how to create a date at a specific time.

What would be the simplest way to see if [NSDate date] is be

相关标签:
5条回答
  • 2021-02-08 11:40

    Noon is at 12:00 PM. Afternoon is from 12:01 PM to around 5:00 PM. Evening is from 5:01 PM to 8 PM, or around sunset. Night is from sunset to sunrise, so from 8:01 PM until 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!");
    
    0 讨论(0)
  • 2021-02-08 11:41

    You could just use the class NSDate to grab the time on the 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");
    

    Reference: NSDate Documentation

    0 讨论(0)
  • 2021-02-08 11:46

    Use an NSCalendar instance to create a NSDateComponents instance out of your NSDate, then just check the hours, minutes and seconds property of the NSDateComponents and present the appropriate message.

    0 讨论(0)
  • 2021-02-08 11:53

    Yes you can using NSDateComponents which will return the hour in the 24 hour format.

    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")
    }
    
    0 讨论(0)
  • 2021-02-08 11:58

    Updated for 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")
    }
    
    0 讨论(0)
提交回复
热议问题