「現在の時間」を「00:00以降の分単位の時間」に変換する計算ヘルプ

StackOverflow https://stackoverflow.com/questions/1817749

  •  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 が返されます(ただし、負)真夜中と現在の時刻の差。

NS
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top