为什么这个NSDate格式不正确?

时间:2013-04-27 00:25:10

标签: iphone objective-c

目前我的控制台上写着

This is the date: 2013-04-27 00:21:00 +0000

然而,在UIDatePicker(选择)中,我选择的是2013-04-26,而不是27。

-(IBAction)saveList:(id)sender {

    NSDateFormatter *pickerFormatter = [[NSDateFormatter alloc] init];
    [pickerFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
    pickerFormatter.timeZone = [NSTimeZone localTimeZone];
    pick.date = [pickerFormatter dateFromString:dateLabel.text];
    NSLog(@"This is the date: %@", pick.date);

    [ListItemObject saveListItem:[PFUser currentUser] withName:listFieldText withDate:pick.date];

    [self.navigationController popViewControllerAnimated:YES];
    [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}

此部分工作正常,并在标签中显示正确的日期。

-(IBAction)updateDateLabel:(id)sender {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm"];
    dateLabel.text = [formatter stringFromDate:pick.date];

}

2 个答案:

答案 0 :(得分:0)

请注意,在控制台中,您会看到0000时区,这意味着UTC,而您的用户界面则适用于系统默认时区(您的)。

这是因为调试控制台使用description方法,将日期格式化为UTC,您可能希望添加类似

的内容
 NSLog(@"%@", [formatter stringFromDate:pick.date]);

这样你就可以在UI和控制台中看到完全相同的东西。

答案 1 :(得分:0)

此外,您可以使用以下内容记录日期:

NSDate *now = [NSDate date];
NSLog(@"Now is %@", [now descriptionWithLocale:[NSLocale currentLocale]]);