ماهي الطريقة الصح لكتابة تاريخ الامس بالجافاسكربت
السلام عليكم ورحمة الله وبركاته
في الصورة اسفل سويت دالة تعطيني تاريخ الامس! لكن تظهر لي علامة خطأ عند dd1 مع ان الكود شغال تمام!
هل طريقتي هذي صحيحة؟
وشكرا
الإجابة الصحيحة
لا أبدًا، يستحيل أن تكون طريقة يدويّة كهذه صحيحة.
جرّب الكود التالي:
moment().add(-1, 'days');
الإجابات (6)
لا للأسف أعتقد غير صحيحة، لأن اليوم لو كان 01، هل سيصبح 0 ؟
ولو رجع إلى 31 مثلًا، لن ينقص الشهر من 5 إلى 4 !
هذا كود من ستاك أوفرفلو : Function to get yesterday's date in Javascript
var today = new Date();
var yesterday = new Date(today);
yesterday.setDate(today.getDate() - 1); //setDate also supports negative values, which cause the month to rollover.
// لتنسيق التّاريخ
var dd = yesterday.getDate();
var mm = yesterday.getMonth()+1; //January is 0!
var yyyy = yesterday.getFullYear();
if(dd<10){dd='0'+dd}
if(mm<10){mm='0'+mm}
// ^ يُضيف 0 إلى الأرقام إن كانت أقل من 10 يمكنك إلغاؤه
yesterday = dd+'/'+mm+'/'+yyyy;
// النتيجة
'06/05/2018'
الاجابة رائعة وشكرا لإنك الهمتني الجواب
حللت المشكلة بهذي الطريقة وكانت كما اريد بالضبط
ولإنني استخدم moment الكود كان هكذا
النتيجة كانت
'2018-05-06'
عدلت على الكود بسبب مشكلة تاريخ الشهر
وهذي النتيجة بعد التعديل!
var mm1:any = moment().format('MM');
var dd1:any = moment().format('DD');
var yy1:any = moment().format('YYYY');
let yesterday:any = dd1 - 8;
var dd:any = yesterday
var mm:any = mm1;
var mm2:any = mm-1;
if(dd<10){dd='0'+dd}
if(dd<1){mm='0' + mm2}
if(mm==1 && dd<1){dd='31'}
if(mm==2 && dd<1){dd='29'}
if(mm==3 && dd<1){dd='31'}
if(mm==4 && dd<1){dd='30'}
if(mm==5 && dd<1){dd='31'}
if(mm==6 && dd<1){dd='30'}
if(mm==7 && dd<1){dd='31'}
if(mm==8 && dd<1){dd='31'}
if(mm==9 && dd<1){dd='30'}
if(mm==10 && dd<1){dd='31'}
if(mm==11 && dd<1){dd='30'}
if(mm==12 && dd<1){dd='31'}
var yester:any = yy1 + '-' + mm + '-' + dd;
// النتيجة = 2018-04-30
هل الطريقة صحيحة؟
وشكرا جزيلا على التنبيه 🤗
لا أبدًا، يستحيل أن تكون طريقة يدويّة كهذه صحيحة.
جرّب الكود التالي:
moment().add(-1, 'days');
وعليكم السلام ورحمة الله وبركاته
دام انت تستخدم Moment.js ليش ماتسخدم الدوال الي توفرها لك بدل اعادة برمجة الآلية من جديد
استخدم دالة subtract
لحذف يوم
مثال:
moment().subtract(1, 'day')
و هنا يعطيك قوة انك تقدر تنشئ اي تاريخ باستخدام دالة moment
وتمرير اي تاريخ لها والحصول على اليوم الذي قبله باستخدام subtract
مثال:
moment('2017/11/6', 'YYYY/MM/DD').subtract(1, 'days').toString()
بالاخير استخدمت دالة toString
لطباعة التاريخ الجديد
اتمنى ان تفيدك اجابتي
الله عليكم
مشكورين جدا
هذا الكود مشى معاي
let yester = moment().subtract(8, 'day').format('YYYY-MM-DD').toString();
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !