2014-02-22 27 views
-2

我想要做的是有一个NSDate与当前正确的时间。当我将日期转换为字符串时,时间是正确的,但是当我转换回NSDate时,时间刚刚关闭。NSDate从NSString获取错误的日期

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm"]; 
[dateFormatter setLocale:[NSLocale currentLocale]]; 
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; 
NSDate* myDate = [dateFormatter dateFromString:dateString]; 
NSLog(@"datete:%@ and %@", myDate, dateString); 

2014年2月22日0时18分00秒+0000和21-02-2014 16:18

+0

如果你显示'NSLog'的输出,那真的会有帮助。这可能没有错。在UTC时区,'NSDate'如何被记录。 – rmaddy

+0

顺便说一句 - 没有必要将日期格式化程序的语言环境设置为当前语言环境 - 这是默认设置。 – rmaddy

+0

我用nslog更新了原始文章。 – Bomiz

回答

0

打印时NSDate对象,请记住,description返回UTC日期。因此,如果您看到两个对象之间存在差异,请确保考虑您的时区并将其添加到NSDate的打印值。

当您想要在日志和/或用户界面中正确地打印它们时,应该使用日期格式化程序,而不是直接打印NSDate对象。日期格式化程序采用本地时区和系统区域设置,并正确打印日期。

+0

我将如何去添加正确的金额?这是不同的时区 – Bomiz

+0

@Bomiz我的意思是添加在你的头,所以你可以检查正确性。 'NSDate'对象不包含任何时区信息。当你想在你的日志和/或UI中正确地打印它们时,应该使用日期格式化程序,而不是直接打印'NSDate'对象。 –

+0

我正在做的是将当前日期保存为userdefault。我无法保存格式化程序。所以我认为是将它转换回NSDate以便保存。但是有可能将具有正确日期的NSString转换为包含与字符串相同日期的NSDate? – Bomiz