Xcode(Objective-C)で、現在時刻が特定の時間帯(朝9時〜夜18時)にあるかどうかの判定文が、ググっても出てこなかったので自分で書いてみた。めんどい(^_^;)
やりたい事としては、以下の様な感じ
//定時内なら
if( 9:00 <= 現在時刻 <= 18:00){
//定時外なら
}else{
}
でも、Objective-Cに限らず、たいていのプログラミング言語では時間の管理は、時刻ではなく「年月日 時分秒」で管理しているで、時間帯での処理は意外と苦手(^_^;)
時間帯アルゴリズムの説明
1,現在の年月日を取得
2,現在年月日+”9:00:00″ & 現在年月日+”18:00:00″ で、比較するための開始時間と終了時間の年月日時分秒を取得
3,現在時刻が時間帯の範囲内かどうかチェックする
具体的なソースは以下の通り。こんな単純な事をしたいだけなのにソースが長い!
でも、こういったコーディングをしていると、コンピュータが日常に浸透してきたな〜って感じがするね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// まず、現在日時を取得 NSDate* NowDate = [NSDate date]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ; // 年月日だけ(時刻なし)のフォーマットで文字列化 [formatter setDateFormat:@"YYYY/MM/dd"]; NSString* DateStr = [formatter stringFromDate:NowDate]; // 現在日時を使って、時間帯の開始時間・終了時間を作成する NSString *StartTime=[NSString stringWithFormat:@"%@ %@",DateStr, @"09:00:00"]; NSString *EndTime=[NSString stringWithFormat:@"%@ %@",DateStr, @"18:00:00"]; // 開始時間・終了時間を、文字列型 → NSDate型に戻す NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"]; NSDate *StartDate = [dateFormatter dateFromString:StartTime]; NSDate *EndDate = [dateFormatter dateFromString:EndTime]; NSLog(@"現在時刻は、%@",[dateFormatter stringFromDate:NowDate]); // 朝の出勤時間〜夜の定時までなら if([NowDate compare:StartDate] == NSOrderedDescending && [NowDate compare:EndDate] == NSOrderedAscending){ NSLog(@"定時内です。%@〜%@",StartTime, EndTime); //それ以外の時間帯なら }else{ NSLog(@"定時外です。%@〜%@",StartTime, EndTime); } |