3

私がやろうとしているのは、時間帯に応じて画像の背景を変更することですが、問題が発生しています。コードは次のとおりです。

-(void)updateBackground
{
    NSDate *currentTime = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"hh:mm a"];
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    NSString *resultTime = [dateFormatter stringFromDate:currentTime];
    [timeLabel setText:resultTime];
    NSString *morningStart = [NSString stringWithFormat:@"05:00 AM"];
    NSString *morningEnd = [NSString stringWithFormat:@"11:59 AM"];
    NSString *afternoonStart = [NSString stringWithFormat:@"12:00 PM"];
    NSString *afternoonEnd = [NSString stringWithFormat:@"02:59 PM"];
    NSString *eveningStart = [NSString stringWithFormat:@"03:00 PM"];
    NSString *eveningEnd = [NSString stringWithFormat:@"07:59 PM"];
    NSString *nightStart = [NSString stringWithFormat:@"08:00 PM"];
    NSString *nightEnd = [NSString stringWithFormat:@"04:59 AM"];
    NSLog(resultTime);
    if ([resultTime compare:morningStart]==NSOrderedDescending) {
        if ([resultTime compare:morningEnd]==NSOrderedAscending) {
            UIImage *morning = [UIImage imageNamed:@"MorningTime.jpeg"];
            [background setImage:morning];
        }
    }
    if ([resultTime compare:afternoonStart]==NSOrderedDescending) {
        if ([resultTime compare:afternoonEnd]==NSOrderedAscending) {
            UIImage *afternoon = [UIImage imageNamed:@"afternoonSky.jpeg"];
            [background setImage:afternoon];
        }
    }
    if ([resultTime compare:eveningStart]==NSOrderedDescending) {
        if ([resultTime compare:eveningEnd]==NSOrderedAscending) {
            UIImage *evening = [UIImage imageNamed:@"EveningSky.jpeg"];
            [background setImage:evening];
        }
    }
    if ([resultTime compare:nightStart]==NSOrderedDescending) {
        if ([resultTime compare:nightEnd]==NSOrderedAscending) {
            UIImage *night = [UIImage imageNamed:@"NightSky.jpeg"];
            [background setImage:night];
        }
    }


}

では、問題は何かというと、今が午後 11 時 54 分であるとしましょう。正しいifステートメントを選択していません!私は何をしますか?

4

3 に答える 3

0

これはあなたを助けるかもしれません、

NSDate *currentTime = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"hh:mm a"];
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    NSString *resultTime = [dateFormatter stringFromDate:currentTime];
    NSString *morningStart = [NSString stringWithFormat:@"05:00 AM"];
    NSString *morningEnd = [NSString stringWithFormat:@"11:59 AM"];
    NSString *afternoonStart = [NSString stringWithFormat:@"12:00 PM"];
    NSString *afternoonEnd = [NSString stringWithFormat:@"14:59 PM"];
    NSString *eveningStart = [NSString stringWithFormat:@"15:00 PM"];
    NSString *eveningEnd = [NSString stringWithFormat:@"19:59 PM"];
    if ([morningStart compare:resultTime]==NSOrderedAscending & [resultTime compare:morningEnd]==NSOrderedAscending) {
            NSLog(@"morning");      
    }
   else  if ([afternoonStart compare:resultTime]==NSOrderedAscending & [resultTime compare:afternoonEnd]==NSOrderedAscending) {
                NSLog(@"aftrnon..."); 
            }
   else  if ([eveningStart compare:resultTime]==NSOrderedAscending & [resultTime compare:eveningEnd]==NSOrderedAscending) {
                NSLog(@"evening");    
    }
    else {
        NSLog(@"nit time");
    }
于 2012-10-24T05:13:52.510 に答える
0

NSDate 形式は 24 時間形式で時刻を提供するため、条件を任意に配置するには、時刻を (01:00 AM,13:00 PM ) のように変更する必要があります。

于 2012-10-24T05:10:03.153 に答える
0

NSDateComponentsを使用して、比較するNSDateオブジェクトの時間と分のみを取得する必要があります。使用方法については、 NSDateComponentsの公式ドキュメントを参照してください。

次に、次のいずれかの方法を使用してNSDateオブジェクトを比較します。

- (NSDate *)earlierDate:(NSDate *)anotherDate
- (NSDate *)laterDate:(NSDate *)anotherDate
- (BOOL)isEqualToDate:(NSDate *)anotherDate

日付を比較するときは、NSString を使用しないでください。

于 2012-10-25T06:24:36.317 に答える