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の午前0時に設定されているためです。ただし、UTC以外のタイムゾーンで日付を表示している場合は、それに応じて時刻がシフトされます。

たとえば、ニューヨークに住んでいる場合、2012年12月29日00:00:00 UTCは、実際には2012年12月28日18:00:00です。

于 2012-12-29T16:05:36.613 に答える
0

あなたのコードは完璧で、エラーはありません。

nslogging dateInput.text、monthInput.text、yearInput.textを試してください...ここから無効なデータを取得している可能性があります。

于 2012-12-29T16:16:47.547 に答える