سؤال

لقد بدأت NSDATE مع [NSDATE DATE] ؛ وأريد التحقق مما إذا كان قد مر 5 ساعات منذ متغير NSDATE هذا أم لا. كيف يمكنني القيام بذلك؟ ما لدي في الكود الخاص بي هو

requestTime = [[NSDate alloc] init];
requestTime = [NSDate date];

في طريقة لاحقة ، أود التحقق مما إذا كان قد مر 12 ساعة منذ وقت الطلب أم لا. الرجاء المساعدة! شكرا لك مقدما.

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

المحلول

int seconds = -(int)[requestTime timeIntervalSinceNow];
int hours = seconds/3600;

في الأساس هنا أسأل عن عدد الثواني التي مررت بها منذ أن حصلنا على طلب طلبنا لأول مرة. ثم مع القليل من سحر الرياضيات ، ويعرف أيضًا باسم عدد الثواني في ساعة واحدة ، يمكننا الحصول على عدد الساعات التي مرت.

كلمة تحذير. تأكد من استخدام الكلمة الرئيسية "الاحتفاظ" عند تعيين وقت الطلب. يحب Xcode أن ينسى ما تم تعيين كائنات NSDate بدونها.

    requestTime = [[NSDate date] retain];

نصائح أخرى

NSInteger hours = [[[NSCalendar currentCalendar] components:NSHourCalendarUnit fromDate:requestTime toDate:[NSDate date] options:0] hour];
if(hours >= 5)
    // hooray!

حاول استخدام هذه الطريقة ، أو شيء من هذا القبيل.

- (int)hoursSinceDate :(NSDate *)date
{
    #define NUBMER_OF_SECONDS_IN_ONE_HOUR 3600

    NSDate *currentTime = [NSDate date];
    double secondsSinceDate = [currentTime timeIntervalSinceDate:date];
    return (int)secondsSinceDate / NUBMER_OF_SECONDS_IN_ONE_HOUR;
}

يمكنك بعد ذلك القيام بفحص بسيط على استجابة ساعة عدد صحيح.

int hours = [dateUtilityClass hoursSinceDate:dateInQuestion];
if(hours < 5){
    # It has not yet been 5 hours.
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top