Найти, если текущее время находится между диапазоном
Я могу найти, как получить, если дата находится между диапазоном, но я не могу представить, как создать дату в определенное время.
Каким будет самый простой способ увидеть, что [NSDate date] находится между временным диапазоном?
Я хочу показать персонализированное приветствие следующим образом:
12 pm - 4: 59: 9999 pm @ "Добрый день, foo"
17:00 - 11: 59: 9999 вечера @ "Добрый вечер, foo"
12:00 - 11: 59: 9999 am @ "Доброе утро, foo"
Ответы
Ответ 1
Да, вы можете использовать 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")
}
Ответ 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")
}
Ответ 3
Используйте экземпляр NSCalendar
для создания экземпляра NSDateComponents
из вашего NSDate
, а затем просто проверьте свойство часов, минут и секунд NSDateComponents
и укажите соответствующее сообщение.
Ответ 4
Полдень находится в 12:00 PM. Вторая половина дня - от 12:01 до 5:00 вечера. Вечерний - от 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!");
Ответ 5
Вы можете просто использовать класс 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