2

我的方法 dateFromString 有问题,这是我的代码

NSString* res = [NSString stringWithFormat:@"%@/%@/%@",dateInput.text,monthInput.text,yearInput.text];
NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
[formatter setTimeZone:[NSTimeZone localTimeZone]];
[formatter setDateFormat:@"dd/MM/yy"];
NSDate* inpTime = [formatter dateFromString:res];
[dateResult setText:[NSString stringWithFormat:@"%@",inpTime]];

当我运行时,“inpTime”中的日期始终为“dateInput” - 1。例如:如果“dateInput”为5,则“inpTime”中的日期将为4

4

2 回答 2

0

您需要调整时区。

改变

[formatter setTimeZone:[NSTimeZone localTimeZone]];

[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

这是因为您没有设置时间,因此默认设置为午夜 UTC。但是,当您使用 UTC 以外的时区显示日期时,时间会相应移动。

例如,如果您住在纽约,那么12/29/2012 00:00:00 UTC实际上就是12/28/2012 18:00:00

于 2012-12-29T16:05:36.613 回答
0

你的代码是完美的,从来没有错误。

尝试 nslogging dateInput.text、monthInput.text 和 yearInput.text...可能从这里你得到无效数据。

于 2012-12-29T16:16:47.547 回答