[解決済み] 2つのNSDates間の日数[重複]。
2022-04-27 17:59:49
質問
の間の日数を決定するにはどうすればよいですか?
NSDate
の値は(時間も考慮して)どうなっているのでしょうか?
は
NSDate
の値は、どのような形式であれ
[NSDate date]
が取る。
具体的には、私のiPhoneアプリでユーザーがinactiveの状態になったとき、以下のような値を保存しています。
exitDate = [NSDate date];
そして、彼らがアプリを開き直すと、現在の時刻が表示されるんだ。
NSDate *now = [NSDate date];
では、次のように実装してみたいと思います。
-(int)numberOfDaysBetweenStartDate:exitDate andEndDate:now
解決方法は?
以下は、2つの日付の間のカレンダーの日数を決定するために私が使用した実装です。
+ (NSInteger)daysBetweenDate:(NSDate*)fromDateTime andDate:(NSDate*)toDateTime
{
NSDate *fromDate;
NSDate *toDate;
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar rangeOfUnit:NSCalendarUnitDay startDate:&fromDate
interval:NULL forDate:fromDateTime];
[calendar rangeOfUnit:NSCalendarUnitDay startDate:&toDate
interval:NULL forDate:toDateTime];
NSDateComponents *difference = [calendar components:NSCalendarUnitDay
fromDate:fromDate toDate:toDate options:0];
return [difference day];
}
EDITです。
上記の素晴らしい解決策を、以下のSwiftバージョンで拡張しています。
NSDate
:
extension NSDate {
func numberOfDaysUntilDateTime(toDateTime: NSDate, inTimeZone timeZone: NSTimeZone? = nil) -> Int {
let calendar = NSCalendar.currentCalendar()
if let timeZone = timeZone {
calendar.timeZone = timeZone
}
var fromDate: NSDate?, toDate: NSDate?
calendar.rangeOfUnit(.Day, startDate: &fromDate, interval: nil, forDate: self)
calendar.rangeOfUnit(.Day, startDate: &toDate, interval: nil, forDate: toDateTime)
let difference = calendar.components(.Day, fromDate: fromDate!, toDate: toDate!, options: [])
return difference.day
}
}
使用状況に応じて削除することができます。
上記の解決策は、現在のタイムゾーン以外のタイムゾーンに対しても有効で、世界中の場所の情報を表示するアプリに最適です。
関連
-
XCode のコンパイル例外を解決する clang: error: linker command failed with exit code 1
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] UITableView - トップにスクロールする
-
[解決済み】2つのNSDatesを比較する方法。どちらがより新しいですか?
-
[解決済み】Swiftで2つのDate(月/日/時間/分/秒)の差を取得する。
-
[解決済み] 2つのNSDates間のスウィフト日数
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] Objective-CでNSNotificationCenterを通してメッセージを送受信する?
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] UIImageのサイズを変更する最も簡単な方法?
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。