0

私は2つの日付ピッカーを持っています。それぞれがエーテル(280日)とは異なり、ピッカーは正しく変更されますがmydatepicker.date、NSlogを実行するか、日付に入れると、UITextfield日付-1日または日付+1日になります。

これが私のコードです:

最初のピッカー:

int daysToAdd = -280;  
// set up date components
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
[components setDay:daysToAdd];
// create a calendar
NSCalendar *addingdays = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDate *newDate = [addingdays dateByAddingComponents:components toDate:dueDatePickerView.date options:0];
lastPerPickerView.date = newDate;
 NSLog(@"%@",newDate);

2つ目:

int daysToAdd2 = 280;  
// set up date components
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
[components setDay:daysToAdd2];
// create a calendar
NSCalendar *addingdays2 = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDate *newDate2 = [addingdays2 dateByAddingComponents:components toDate:lastPerPickerView.date options:0];
dueDatePickerView.date = newDate2;
NSLog(@"%@",newDate2);

最初のピッカーの日付が2012年12月12日の場合、出力は2012年11月12日です。

私のコードでは、私は彼らに

  lastPerPickerView.datePickerMode = UIDatePickerModeDate;
4

2 に答える 2

1

取得する出力は論理的に正しいです。ただし、要件に応じた出力が必要な場合は、値280を279に変更する必要があると思います。

于 2012-06-20T08:44:39.763 に答える
1

この行をコードに追加してみてください。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT+0:00"]];

また

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
于 2012-06-20T09:11:10.737 に答える