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. 指定された時間範囲の2つの日付間の経過時間
- 7. Redshift count指定した時間範囲内の月曜日の数
- 8. DST GCalイベントで+1時間の時間差が生じる
- 9. 2日間のSQL差分(1日あたりの時間数)
- 10. 指定した開始時刻の時間帯別パンダグループ
- 11. MySQLの日付またはPHP時間?
- 12. 指定された日付/時刻から指定された時間数を差し引いて新しい日付/時刻を取得する
- 13. シフト間の時間を計算する
- 14. 日時変数の時間部分を設定します。
- 15. 指定された時間/日付の空き状況を返します
- 16. クリックしたキー間の測定時間
- 17. 日付計算 - 夏時間(DST)とタイムゾーンの問題 - トルコ
- 18. DSTなしでDSTなしでlinuxで時間を取得
- 19. 完全な日付をAngular2で指定した時間でマージしたい
- 20. 時間入力などの時間形式のシフト、出力
- 21. PHP時間または分の年を指定する方法
- 22. 指定された数のプラスまたはマイナスの絶対値の配列を確認してください
- 23. SQL;プラス+またはマイナス - 日付(ASP.NET-C#)の代わりに
- 24. Android:OS時間に依存しない一定の時間からのカウント日数
- 25. 時間データからシフト
- 26. ハイチャート:日中の保存時間が間違っているキャンドルチャートDST
- 27. 指定した時間が納品日に追加された場合
- 28. Youtrack時間レポート共同作業者の1日あたりの時間数
- 29. MySQLの日時デフォルトの時間間隔
- 30. 文字列 "5pm"または "5am"を指定して、時間とAMPM指定子
[「時差の決定」](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html#//apple_ref/doc/uid)をご覧ください。/TP40007836-SW8)を参照してください。 –