البرمجة

حلول برمجية لتحويل وقت الفعاليات إلى تنسيقات صحيحة في تطبيق الأندرويد

في عملية إضافة فعالية إلى تطبيقك، تواجه تحديين أساسيين يتعلقان بتحويل الوقت من نص إلى تنسيق تاريخ صحيح. القضية الأولى تتعلق بحساب وقت الانتهاء بناءً على وقت البداية والمدة، والقضية الثانية تنطوي على التعامل مع الفروق الزمنية بين الأيام. دعنا نلقي نظرة على كيفية التعامل مع هاتين المشكلتين.

التعامل مع المشكلة الأولى:

لحل مشكلة احتساب وقت الانتهاء بناءً على وقت البداية والمدة، يجب عليك أولاً تحويل الوقت من الساعات والدقائق إلى إجمالي الدقائق. يمكنك استخدام الصيغة التالية:

int startingTimeInMinutes = prefs.getInt("mStartingHour", 0) * 60 + prefs.getInt("mStartingMin", 0);
int durationInMinutes = prefs.getInt("mDurationHour", 0) * 60 + prefs.getInt("mDurationMin", 0);

int endingTimeInMinutes = startingTimeInMinutes + durationInMinutes;

// تحويل إجمالي الدقائق إلى ساعات ودقائق
int endingHourInt = endingTimeInMinutes / 60;
int endingMinInt = endingTimeInMinutes % 60;

endingTime.setText(String.format("%02d:%02d", endingHourInt, endingMinInt));

بهذا الشكل، يتم الحساب بدقة ويتم تنسيق الناتج ليظهر بصورة صحيحة.

التعامل مع المشكلة الثانية:

لحساب الفروق الزمنية بين الأيام، يجب عليك التفكير فيما إذا كان يجب عليك إضافة يوم إضافي أم لا. يمكنك استخدام التالي:

// إضافة الدقائق للوقت البداية
int endingTimeInMinutes = startingTimeInMinutes + durationInMinutes;

// التحقق مما إذا كان يجب إضافة يوم إضافي
if (endingTimeInMinutes >= 24 * 60) {
    endingTimeInMinutes -= 24 * 60;
}

// تحويل إجمالي الدقائق إلى ساعات ودقائق
int endingHourInt = endingTimeInMinutes / 60;
int endingMinInt = endingTimeInMinutes % 60;

endingTime.setText(String.format("%02d:%02d", endingHourInt, endingMinInt));

بهذا الشكل، ستتجنب المشكلة التي قد تحدث بسبب تجاوز الحد الأقصى للوقت.

المزيد من المعلومات

بالطبع، دعنا نوسع على الموضوع ونقدم بعض المعلومات الإضافية.

تفصيل أكثر حول التحويل من الوقت إلى الدقائق:

في الكود الذي تم توفيره، تم استخدام الصيغة التالية لتحويل الوقت من ساعات ودقائق إلى إجمالي الدقائق:

int startingTimeInMinutes = prefs.getInt("mStartingHour", 0) * 60 + prefs.getInt("mStartingMin", 0);
int durationInMinutes = prefs.getInt("mDurationHour", 0) * 60 + prefs.getInt("mDurationMin", 0);

حيث يتم ضرب ساعات البداية والمدة في 60 لتحويلها إلى دقائق، ثم يتم إجمال النتائج مع الدقائق الفعلية. هذا يضمن حساب صحيح لإجمالي الدقائق.

معالجة الفروق الزمنية بين الأيام:

تم التعامل مع الفروق الزمنية بين الأيام بوضع شرط يتحقق من ما إذا كان الوقت الإجمالي للانتهاء يتجاوز 24 ساعة. إذا كان الأمر كذلك، يتم خصم 24 ساعة من الإجمال لضمان أن الوقت يظل ضمن إطار 24 ساعة.

// التحقق مما إذا كان يجب إضافة يوم إضافي
if (endingTimeInMinutes >= 24 * 60) {
    endingTimeInMinutes -= 24 * 60;
}

وبالتالي، تضمن هذه الخطوة أن يتم تصحيح أي تجاوز للوقت الإجمالي بمرور الوقت.

تنسيق النتيجة بشكل صحيح:

أخيرًا، لضمان عرض الوقت بتنسيق صحيح، تم استخدام String.format لتنسيق الساعات والدقائق بطريقة تضمن وجود رقمين للساعات والدقائق.

endingTime.setText(String.format("%02d:%02d", endingHourInt, endingMinInt));

هذا يضمن أن الوقت يظهر بتنسيق “ساعة:دقيقة”، مع إضافة صفر إلى الأمام إذا كان الرقم أحادي الرقم.

زر الذهاب إلى الأعلى