-3

我想从代表时间和日期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!此外,他们有不同的日子!

为什么它们不同?

4

3 回答 3

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]);

我希望它对你有帮助。谢谢

于 2013-05-10T10:45:22.233 回答
0
 NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate);

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

于 2013-05-10T09:30:34.023 回答
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 小时。

所以日期是相同的,一次打印时区,一次没有。

于 2013-05-10T11:31:10.383 回答