「現在の時間」を「00:00以降の分単位の時間」に変換する計算ヘルプ
-
08-07-2019 - |
質問
NS
午前0時からの店舗の閉店時間を分単位で表す整数があります。基本的に、私の店は午後5:00に閉店し、整数1020が得られます。
つまり、現時点では午後10時45分または22.45です。 00:00以降の整数は1365であり、これから私は言うことができます
if (storeHour < currentTime) {
// closed!
}
ただし、「22.45」からどのように取得するかわかりません。 NSDateから00:00以降の時間を表す整数に変換することを持っています。 NSDateでそれを手伝ってくれるものはありますか?
Thx
解決
独自のカスタム整数形式を使用する代わりに、 NSDate
オブジェクトを使用してストアが閉じる時間を保存することをお勧めします。 NSDate
は日付と時刻の両方を表しているのは残念です。
いずれの場合でも、 NSDateComponents
。次のようなユーティリティメソッドを使用できます。
int minutesSinceMidnight:(NSDate *)date
{
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
unsigned unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags fromDate:date];
return 60 * [components hour] + [components minute];
}
他のヒント
@notnoopが応答したものの迅速なバージョン:
func minutesSinceMidnight(start : NSDate) -> Int {
let units : NSCalendarUnit = [.Hour, .Minute]
let components = NSCalendar.currentCalendar().components(units, fromDate: start)
return 60 * components.hour + components.minute
}
深夜に設定された別の NSDate
がある場合、NSDateオブジェクトの timeIntervalSinceDate
メソッドを使用して NSTimeInterval
を取得できます。 2つの違いで戻って。あるいは、真夜中と現在の時刻を常に比較したい場合は、真夜中のNSDateで timeIntervalSinceNow
メソッドを呼び出すと、 NSTimeInterval
が返されます(ただし、負)真夜中と現在の時刻の差。
所属していません StackOverflow