NSDate Off на один день - PullRequest
       1

NSDate Off на один день

2 голосов
/ 25 декабря 2011

в приложении для iPhone, которое я сейчас разрабатываю, у меня есть некоторые проблемы с датами. Я не использую их широко, так что это довольно просто, но я почему-то все еще делаю это неправильно. Когда я передаю NSDate через простой UIDatePicker месяц / день / год, я выбираю, например, 24 декабря 2011 года. Однако, когда я распечатываю NSDate в соответствии с местным часовым поясом через NSDateFormatter, я получу вывод MM-DD-YY, который на день меньше выбранного дня. Вот весь мой соответствующий код ввода / вывода даты:

Я беру дату, связанную с пользовательским объектом через UIDatePicker, следующими методами:

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet // Protocol method for UIActionSheetDelegate
{

// Among other things, add our UIDatePicker to a UIActionSheet that we pop up.

NSDate* currentDate = [NSDate date];

[pickerView setDate:currentDate];

[pickerView setMaximumDate:currentDate];

[pickerView setDatePickerMode:UIDatePickerModeDate]; // We don't need time for this.

}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ // UIActionSheetDelegate Protocol method for saving date change if OK is selected, else if cancel is selected, do nothing.

    [self.customObjectBeingInput setDate:[ourDatePicker date]]; // Set object date to selected date in date picker.
}

Что касается вывода даты в UILabel, которую я настроил, вот что там происходит:

NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; // Format the date into human-readble format.
    [dateformatter setDateFormat:@"MM-dd-yyyy"];
    [dateformatter setTimeZone:[NSTimeZone systemTimeZone]];
    [dateformatter setDateStyle:NSDateFormatterShortStyle];
    NSString *formattedDate = [dateformatter stringFromDate:[self.customObject date]];
    [[self.customViewController customObjectDateLabel] setText:formattedDate];
    [dateformatter release];
    dateformatter = nil;

Должен ли я устанавливать что-то, связанное с часовыми поясами для входа UIDatePicker, или, поскольку NSDate возвращает абсолютный момент времени независимо от часового пояса пользователя, мы можем вообще игнорировать проблемы с местностью, по крайней мере, в вход каскад?

Я определенно думаю, что это связано с выходным каскадом, а не с тем, как я принимаю дату через UIDatePicker, но я в растерянности относительно того, что я делаю неправильно или не делаю в все.

...