سؤال

لقد حصلت على قيمتين زمنيتين بالتنسيق:%H%M%S (على سبيل المثال 161500)

هذه القيم هي أعداد صحيحة تعتمد على النص.

هل توجد دالة بسيطة في Cocoa تحسب الفرق بين هذين العددين الصحيحين باستخدام مقياس 60 ثانية ودقيقة؟

حتى إذا

time 1 = 161500
time 2 = 171500

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

المحلول

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HHmmss"];

NSDate *date1 = [dateFormatter dateFromString:@"161500"];
NSDate *date2 = [dateFormatter dateFromString:@"171500"];

NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; // diff = 3600.0

نصائح أخرى

فئة معالجة التواريخ هي NSDate.طريقة الحصول على فترات زمنية هي -timeIntervalSinceDate:.والنتيجة هي أ NSTimeInterval القيمة، وهي أ double يمثل الفاصل الزمني بالثواني.

يمكنك إنشاء NSDate كائن من أ NSString مع +dateWithString:, ، بشرط أن يتم تنسيق التاريخ الخاص بك كـ 2001-03-24 10:45:32 +0600.

جرب هذا الرمز.

- (NSTimeInterval)intervalBetweenDate:(NSDate *)dt1 andDate:(NSDate *)dt2 {

NSTimeInterval interval = [dt2 timeIntervalSinceDate:dt1];
NSLog(@"%f",interval);
return interval;

}

سأقوم بإنشاء فئة فرعية NSFormatter لتحليل قيم الوقت بهذا التنسيق من بيانات الإدخال (يمكنك وضع واحدة في حقل نص لتحويل إدخال المستخدم تلقائيًا، أو استخدامها للتحليل من مصدر بيانات في التعليمات البرمجية).اطلب منه إرجاع العدد المدمج للثواني كـ NSTimeInterval (ثواني تمثل مزدوجة) ملفوفة في NSNumber.من السهل طرح الفرق وعرضه باستخدام نفس فئة NSFormatter التي قمت بإنشائها.في كل من التحليل وعرض القيم، أنت المسؤول عن كتابة التعليمات البرمجية التي يتم تحويلها من الثواني إلى الساعات: الدقائق: الثواني أو أي تنسيق تريده.يمكنك أيضًا تحويل هذه القيم إلى NSDate مثل mouviciel المذكور، إذا كان ذلك مناسبًا لتطبيقك.فقط ضع في اعتبارك أنك ستقوم دائمًا بتخزين فارق التوقيت من تاريخ مرجعي، عادةً ما يكون الأول من يناير عام 1970 (يمتلك NSDate طرقًا للقيام بذلك نيابةً عنك).

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