تحويل "الوقت الحالي" إلى "الوقت بالدقائق منذ 00:00" مساعدة الحساب

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

  •  08-07-2019
  •  | 
  •  

سؤال

وأنا لم تستخدم NSDate ذلك بكثير، لذلك أريد بعض المساعدة مع حساب أقوم به.

ولدي صحيح أن لديها ساعة إغلاق مخزني في دقائق منذ منتصف الليل. في الأساس، ويغلق مخزني في 17:00، الذي يعطيني صحيحا 1020.

وحتى الآن انها 22:45 أو 22.45. صحيح منذ 00:00 هو 1365، ومن هذا يمكنني القول

if (storeHour < currentTime) {
      // closed!
}

ولكن، وأنا لا أعرف كيف أحصل من "22.45" أن لدي من NSDate لتحويلها إلى عدد صحيح يمثل الوقت منذ 00:00. هل هناك شيء في NSDate يمكن أن تساعدني في ذلك؟

وتشك

هل كانت مفيدة؟

المحلول

وأنا لا أوصي باستخدام كائن NSDate لتخزين الوقت يغلق المتجر بدلا من استخدام الخاص شكل صحيح المخصصة. من المؤسف أن NSDate يمثل كل من التاريخ والوقت من الآن.

في أي حال، يمكنك التحقق <لأ href = "http://developer.apple.com/mac/library/documentation/cocoa/reference/Foundation/Classes/NSDateComponents_Class/Reference/Reference.html#//apple_ref / وثيقة / c_ref / NSDateComponents "يختلط =" noreferrer "> 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 أخرى التي من المقرر أن منتصف الليل، ثم يمكنك استخدام الأسلوب timeIntervalSinceDate الكائن NSDate للحصول على NSTimeInterval مرة أخرى مع الفرق بينهما. بدلا من ذلك، إذا كنت ترغب دائما لمقارنة منتصف الليل مع الوقت الحالي، يمكن استدعاء الأسلوب timeIntervalSinceNow على NSDate منتصف الليل وكنت الحصول على NSTimeInterval الظهر (ولو سلبية) مع الفارق بين منتصف الليل والوقت الحالي.

ويعرف NSTimeInterval باعتباره double وفق المعايير التي تملك عددا من ثانية (وأي ثواني كسور).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top