NSDateFormatter中的日期和时间错误

时间:2013-05-10 09:23:52

标签: ios nsstring nsdate nsdateformatter

我想从两个代表时间和日期的NSDate创建NSStrings

看看我的代码:

NSDateFormatter *form = [[NSDateFormatter alloc] init];

[form setDateFormat:@"hh:mm dd.MM.yyyy"];

NSDate *notDate = [form dateFromString:[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date]];

NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate);

日志告诉我这个数字:

12:00 12.05.2013 // 2013-05-11 18:00:00 +0000

在左侧 - 2个字符串,在右边 - 日期

首先得到12:00,第二次是18:00!此外,他们有不同的日子!

为什么他们不同?

3 个答案:

答案 0 :(得分:1)

您应该使用stringFromDate函数将notDate更改为NSString。试试这个代码: -

NSDateFormatter *form = [[NSDateFormatter alloc] init];

[form setDateFormat:@"HH:mm dd.MM.yyyy"];

NSDate *notDate = [form dateFromString:[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date]];

NSLog(@"notDate =====> %@",notDate);

NSLog(@"date =====> %@",[form stringFromDate:notDate]);

我希望它可以帮到你。感谢

答案 1 :(得分:0)

 NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate);

在这一行中你打印一个字符串和NSDate ..你从字符串创建一个NSDate。 NSDate隐式将您的字符串转换为NSDate格式....所以它们是不同的..

答案 2 :(得分:0)

如果你改变了

[form setDateFormat:@"hh:mm dd.MM.yyyy"];

[form setDateFormat:@"HH:mm dd.MM.yyyy"];

它将使用24小时格式。

NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate);

应输出00:00 12.05.2013 // 2013-05-11 18:00:00 +0000并解释所有内容:

如果您不手动更改它,NSDateFormatter会将您当前的区域设置考虑在内,而内部的每个NSDate对象都保存在GMT中(因此+0000)。 根据您的个人资料,您位于彼尔姆 - 比格林威治标准时间早6小时。

所以日期是相同的,一旦用帐户中的时区打印,一旦没有。