كيف تخبر كمية الساعات منذ NSDATE
-
25-09-2019 - |
سؤال
لقد بدأت 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.
}
لا تنتمي إلى StackOverflow