-5

目前我的控制台读取

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

但是在 UIDatePicker (pick) 中,我选择的是 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];

}
4

2 回答 2

0

请注意,在控制台中,您会看到0000时区,这意味着 UTC,而您的 UI 在系统默认时区(您的)上工作。

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

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

以便您在 UI 和控制台中看到完全相同的内容。

于 2013-04-27T00:26:05.047 回答
0

此外,您可以使用以下方式记录日期:

NSDate *now = [NSDate date];
NSLog(@"Now is %@", [now descriptionWithLocale:[NSLocale currentLocale]]);
于 2013-04-27T07:30:43.300 回答