4

これが私のdatePickerのセットアップ方法です

self.datePicker = [[UIDatePicker alloc] init];
self.datePicker.timeZone = [NSTimeZone localTimeZone];

これは、選択した日付を保存する方法です

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeZone:[NSTimeZone localTimeZone]];
dateToSave = [formatter dateFromString:self.dateTextField.text];
NSLog(@"date saved = %@", dateToSave);

日付ピッカーから 2013 年 11 月 18 日を選択すると、NSLog が表示されます。

date saved = 2013-11-17 16:00:00 +0000

ただし、コードのどこかで、今日の日付と日付ピッカーで選択した日付の差を日数で取得する必要があります。

NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSDayCalendarUnit fromDate:[NSDate date] toDate:dateSaved options:0];
NSLog(@"number of days => %i", [dateComponents day]);

今日は 11 月 10 日です。保存した日付は 11 月 18 日です。ただし、日数の差は 8 ではなく 7 です

4

3 に答える 3

2

あなたのタイムゾーンは-8です。2013-11-17 16:00:00 +0000に等しい2013-11-18 00:00:00 -0800

[NSTimeZone timeZoneForSecondsFromGMT:0]の代わりに使用[NSTimeZone localTimeZone]

于 2013-11-10T10:06:58.197 に答える
1

(この回答は、2 つの日付間の日数の計算に関する更新された質問を参照しています。)

問題は、現在の日の開始[NSDate date]ではなく、現在の日付と時刻であることです。たとえば、

 [NSDate date] = "2013-11-10 10:00:00"
 dateSaved     = "2013-11-18 00:00:00"    (both in your *local* timezone)

この 2 つの日付の差は「7 日と 14 時間」です。したがって7、日数として取得します。

したがって、最初に現在の日の開始を計算する必要があります。

NSDate *startOfDay;
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit
                                startDate:&startOfDay
                                 interval:NULL
                                  forDate:[NSDate date]];

そして、それを差の計算に使用します。

NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSDayCalendarUnit
                                           fromDate:startOfDay
                                             toDate:dateSaved
                                            options:0];
于 2013-11-10T10:40:09.553 に答える
0
NSDateFormatter *date_form=[[NSDateFormatter alloc]init];

[date_form setDateFormat:@"dd/MM/yyyy"];

NSDate *seletected_date = [datepicker date];

NSString *dateToSave=[[NSString alloc] initWithFormat:@"%@",[date_form stringFromDate:seletected_date]]; 

NSLog(@"date saved = %@", dateToSave);

ローカルタイムゾーンを削除

于 2013-11-10T10:11:15.163 に答える