1. ホーム
  2. objective-c

[解決済み] 2つの日付の差を計算するにはどうすればよいですか?

2022-09-13 08:48:50

質問

2010年1月1日から2010年2月3日までの日数を計算するにはどうしたらよいですか?

どのように解決するのですか?

NSDate *date1 = [NSDate dateWithString:@"2010-01-01 00:00:00 +0000"];
NSDate *date2 = [NSDate dateWithString:@"2010-02-03 00:00:00 +0000"];

NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];

int numberOfDays = secondsBetween / 86400;

NSLog(@"There are %d days in between the two dates.", numberOfDays);

EDIT

覚えておいてください。 NSDate オブジェクトは正確な時刻を表し、タイムゾーンの情報は持っていません。文字列を日付に変換する際に、例えば NSDateFormatter を使って文字列を日付に変換すると NSDateFormatter は設定されたタイムゾーンから時間を変換します。したがって、2つの NSDate オブジェクトの間の秒数は 常に 時間帯に依存しません。

さらに このドキュメント は、Cocoa の時刻の実装がうるう秒を考慮しないことを指定しています。したがって、そのような精度を必要とするならば、あなた自身の実装をロールバックする必要があります。