NSDate
とNSCalendar
が与えられている場合、指定された日付に続く1日の時間数はどのようにして決定されますか。次の日が夏時間(23日)、通常(24日)、または夏時間の夏時間(25日)に入るかどうかによって、23日、24日または25日になります。指定した日の時間数(DSTシフト時間のプラスまたはマイナス)
3
A
答えて
3
カレンダーには、どのユニットが(どのユニットがいつ始まるか)をrangeOfUnit:startDate:interval:forDate:
と尋ねることができます。
// Test date (the day DST begins)
NSDateComponents *components = [[NSDateComponents alloc] init];
components.year = 2012;
components.month = 3;
components.day = 11;
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *date = [calendar dateFromComponents:components];
NSTimeInterval dayLength;
[calendar rangeOfUnit:NSDayCalendarUnit startDate:NULL interval:&dayLength forDate:date];
NSLog(@"%f seconds", dayLength);
rangeOfUnit:...
がtechincally失敗し、NO
を返しますが、あなたが起こることはできないはずの入力をコントロールしている場合できることに注意してください。
2
// Test input
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy MM dd HH:mm:ss";
NSDate *referenceDate = [formatter dateFromString:@"2012 03 24 13:14:14"];
// Get reference date with day precision
NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *components = [calendar components:unitFlags fromDate:referenceDate];
NSDate *today = [calendar dateFromComponents:components];
// Set components to add 1 day
components = [[NSDateComponents alloc] init];
components.day = 1;
// The day after the reference date
NSDate *tomorrow = [calendar dateByAddingComponents:components toDate:today options:0];
// The day after that
NSDate *afterTomorrow = [calendar dateByAddingComponents:components toDate:tomorrow options:0];
// Difference in hours: 23, 24 or 25
NSUInteger hours = [afterTomorrow timeIntervalSinceDate:tomorrow]/3600;
関連する問題
- 1. 夏時間(DST)、夏時間(DST)のPHPエラーチェック
- 2. 指定された時間
- 3. CakePHPの夏時間(DST)
- 4. 指定された範囲の時間
- 5. PHP:指定された時間のエコーメッセージ
- 6. MySQLの日付またはPHP時間?
- 7. DST GCalイベントで+1時間の時間差が生じる
- 8. 日時変数の時間部分を設定します。
- 9. 時間入力などの時間形式のシフト、出力
- 10. DSTなしでDSTなしでlinuxで時間を取得
- 11. 指定した時間が納品日に追加された場合
- 12. Youtrack時間レポート共同作業者の1日あたりの時間数
- 13. MySQLの日時デフォルトの時間間隔
- 14. SQL;プラス+またはマイナス - 日付(ASP.NET-C#)の代わりに
- 15. 指定された数のプラスまたはマイナスの絶対値の配列を確認してください
- 16. iPhone SDK、指定時間の時間差を計算する
- 17. 指定された時間間隔でメソッドを実行する
- 18. 指定された日時に最も近い日時のフィルタ
- 19. メソッド/関数を指定された時間実行する
- 20. 私はしかし、時間表記なし、日付マイナス1年を取得したいと思います(時間なしSQL Serverの(+)
- 21. 5時間以上経過したオブジェクトのDjangoクエリの日時
- 22. Javaで25時間の日数(夏時間)
- 23. ピッカーダイアログの時間を選択した時間に設定します
- 24. php date()は、指定された整数の日付のときに1時間前に戻ります。
- 25. 幅:継承マイナス(またはプラス)
- 26. シンプルカレンダー - 日+時間
- 27. 指定した開始日と終了日の間の累計日数
- 28. Matlabで指定時間後のブレークループ
- 29. datatable:指定時間後の自動リフレッシュ
- 30. テーブルのすべてのレコードの日付/時刻フィールドから2時間をマイナスしますか?
[「時差の決定」](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html#//apple_ref/doc/uid)をご覧ください。/TP40007836-SW8)を参照してください。 –