带日期的NSDateFormatter dateFromString

时间:2012-12-29 16:00:50

标签: objective-c ios nsdate nsdateformatter

我遇到方法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

2 个答案:

答案 0 :(得分: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 为你。

答案 1 :(得分:0)

你的代码是完美的,没有任何错误。

尝试使用nslogging dateInput.text,monthInput.text和yearInput.text ...可能会从此处获取无效数据。