"час" int взят из NSDate не ведет себя как ожидалось в полночь? - PullRequest
1 голос
/ 06 апреля 2010

Я чувствую, что сошел с ума. Может кто-нибудь сказать мне, что здесь происходит? Кроме того, я уверен, что есть лучший способ сделать то, что я пытаюсь сделать, но мне это сейчас не интересно. Я просто хотел бы разгадать тайну того, почему мои интты не реагируют на логику, как ожидалось.

// Set "At: " field close to current time
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH"];
int hour = [[dateFormatter stringFromDate:[NSDate date]] intValue]; 
[dateFormatter setDateFormat:@"mm"];
int minute = [[dateFormatter stringFromDate:[NSDate date]] intValue];
NSLog(@"currently %i:%i",hour, minute);

if(hour >= 12){ // convert to AM/PM
    selectedMeridiem = 1;
    if(hour != 12){
        hour = hour - 12;
    }
}
else{
    selectedMeridiem = 0;
    if(hour == 0){
        hour = 12;
    }
}

NSLog(@"test");

selectedHour = hour - 1;

if(selectedHour <= 0){
    selectedHour = 11;
}

Когда я отлаживаю вышеуказанный код с моими часами, установленными в 12: XX AM, возвращаемое целое число «час» равно 0. Но тогда любые операторы if с условием if (hour == 0) не оцениваются. Кроме того, это также не будет оцениваться: если (час <1). Приведенный выше код помещает час int в другой int, selectedHour (не беспокойтесь о том, почему я делаю это сейчас), но selectedHour страдает от того же странного поведения; строка if (selectedHour <= 0) никогда не вычисляется. Я схожу с ума, или я просто идиот? Может быть, есть поведение 0 целых чисел, о котором я не знаю. Весь мой код работает нормально до тех пор, пока он не 12: XX AM. </p>

1 Ответ

0 голосов
/ 06 апреля 2010

Это была проблема с моей установкой Xcode, как ни странно. Просто все переустановил и теперь работает правильно. Странно, потому что это просто приводило к отключению сравнения с целыми числами со значением «0».

...