1

今日[NSDate date]とユーザーが UIDatePicker dから選択した日との差を取得しようとしていますが、これは整数として返されます。

違いを理解するために私が使用しているものは次のとおりです。

NSDate *startDate = d;
NSDate *endDate =  [NSDate date];
NSLog(@"startDate: %@",startDate);
NSLog(@"endDate: %@",endDate);

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
NSDateComponents *components = [gregorian components:NSDayCalendarUnit
                                            fromDate:endDate
                                              toDate:startDate
                                             options:0];
NSInteger days = [components day];

NSLog(@"Days: %i",days);

startDateendDateの両方が正しく返されますが、問題は、取得した日差が間違っていることです。たとえば、今日の日付を選択すると差は 0 になり、明日を選択しても差は 0 のままで、翌日を選択すると差は 1 しかないのに 2 になるはずです。

これを修正するために私ができることについて誰かアイデアがありますか? それは私を夢中にさせています、そして私はそれとの取引が何であるかわかりません.

4

2 に答える 2

1
  • たとえば、今日の日付を選択すると差は 0 になり、明日を選択しても差は 0 のままで、翌日を選択すると差は 1 しかないのに 2 になるはずです。

明日の選択された日付が午後 5 時で、今日の現在の日付が午後 8 時であるとします。次に、日数に基づいて日付の差を取得しようとすると、ゼロになるはずです。上記の日付の違いは、完全な 1 日よりも 2 時間短いためです。これで問題が解決することを願っています。比較する両方の日付のコンポーネントを常に同じに設定します。この目的には NSDateComponent を使用してください。

于 2012-07-19T06:09:02.493 に答える
0

通常、このタイプの問題では、この正確な問題を引き起こすさまざまな日付形式に関係しています。

この質問を参照として確認してください: iphone で 2 つの日付間の合計日数を見つける

また

目標 C - 2 つの日付間の日数の計算

于 2012-07-19T05:00:34.027 に答える