Objective-C中的NSDate和dateString

时间:2012-11-14 11:12:55

标签: iphone objective-c ios nsdate nsdata

我想将日期对象保存到我的应用程序的后端。这是代码:

NSDate *date = self.birthPickerView.date;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSString *stringFromDate = [formatter stringFromDate:date];
NSLog(@"%@", stringFromDate);

NSDate *endDate = [formatter dateFromString:stringFromDate];
[formatter release];

NSLog(@"%@", endDate);

// Save to database
[user setObject:endDate forKey:@"birth"];

这是打印结果:

1985-03-05 00:00:00
1985-03-04 23:00:00 +0000

结束日期不对。我想将1985-03-05保存在数据库中。你能帮我解决什么问题吗?

修改

[self.birthPickerView setTimeZone:[NSTimeZone localTimeZone]];

        NSLog(@"%@", self.birthPickerView.date);
        NSLog(@"%@", self.birthPickerView.timeZone);

        [user setObject:self.birthPickerView.date forKey:self.navTitle];

此代码在数据库中保存1984-03-04 23:00:00。这有什么问题?

1 个答案:

答案 0 :(得分:2)

我不明白为什么你需要将你的日期转换为字符串,然后再回到日期。

但是,我很确定会发生这种情况,因为您没有在NSDateFormatter上设置时区。默认时区是GMT,可能会导致您在那里看到时间偏移。