اذهب إلى المحتوى
  • 0

كيفية إضافة المدة الزمنية المنقضية للمنشور في تطبيقي flutter أو frontend باستعمال Backend لغة PHP

Flutter Dev

السؤال

اشاهد في بعض تطبيقات التواصل الاجتماعي وأيضا التطبيقات التجارية يتم إضافة عداد او توقيت او تاريخ زمني 

على سبيل المثال منتج تم عرضه في تطبيق تجاري توجد ساعه  او توقيت صغير خارج المنشور مكتوب عليه ( منذ مثلا 1 ساعه او منذ 3 أيام )ويبقى هذا العدد يحسب الأيام بشكل مستمر

كيف يتم عمل ذلك او عمل هذا العدد الزمني ؟ مع العلم ان مشروعي من خلال flutter وتوجد ملفات php + قاعدة بيانات اون لاين MySQL 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

الأمر يتكون من جزأين،

  • إضافة timestamp طابع زمني لكل منتج في قاعدة البيانات، يمثل تاريخ الإضافة و الذي سوف نحسب منه الوقت تتم هذه إما من قاعدة البيانات أو من خلال PHP تضيف الوقت الفعلي للسيفر عند إضافة منشور
  • حساب الفرق بين الوقت الحالي ووقت إضافة المنتج ومن ثم تحويله لنص سهل القراءة 
    • يمكن عمله في BackEnd قبل إعادة بيانات المنتج (مستحسن)
    • أو حسابه في التطبيق ( هنا ربما المنطقة الزمنية لساعة هاتف مستخدم التطبيق ستعطي وقت غير متوافق مع الخادم وبالتالي خطأ في الحساب)

يمكنك استخدام مكتبة carbon فهي مكتبة قوية تدعم تعدد اللغات وسوف نستخدم دالة diffForHumans التي تعيد الوقت المنقضي بتنسيق قابل للقراءة البشرية بسهولة

<?php

$date = Carbon::now()->locale('ar'); 


echo $date->diffForHumans(); 

يمكنك مراجعة التوثيق لمزيد من المعلومات

كما يمكن حساب الفرق بين توقيتين، ثم عمل منطق بسيط لحساب الأشهر - الساعات ..

<?php

// دالة تستقبل الفرق بين وقتين
function format_interval(DateInterval $interval) {
  // بناء الوقت كنص
    $result = "";
  // كل متغير له قيمة نضيفه مع واحدته الزمنية
    if ($interval->y) { $result .= $interval->format("%y years "); }
    if ($interval->m) { $result .= $interval->format("%m months "); }
    if ($interval->d) { $result .= $interval->format("%d days "); }
    if ($interval->h) { $result .= $interval->format("%h hours "); }
    if ($interval->i) { $result .= $interval->format("%i minutes "); }
    if ($interval->s) { $result .= $interval->format("%s seconds "); }

    return $result;
}
// حساب تاريخين
$first_date = new DateTime("2012-11-30 17:03:30");
$second_date = new DateTime("2012-12-21 00:00:00");

// حساب الفرق بين التاريخين
$difference = $first_date->diff($second_date);

// طباعة الوقت المنقضي
echo format_interval($difference);

الاستخدام، 

  • تجلب وقت إضافة المنتج لقاعدة البيانات أو الحقل الذي يمثل القيمة الزمنية التي تريدها ولنفترض أن اسمه هو created_at.
  • تطرح الوقت الفعلي من created_at ثم تمرره للدالة formate_interval

مثال مع كاربون:

$carbondate = Carbon::parse($post->created_at); 
$past = $carbondate->diffForHumans();

echo($past);

مقالة:

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...