ماهي الطريقة الصح لكتابة تاريخ الامس بالجافاسكربت

عبدالله زاهر • منذ 6 سنوات

السلام عليكم ورحمة الله وبركاته

في الصورة اسفل سويت دالة تعطيني تاريخ الامس! لكن تظهر لي علامة خطأ عند dd1 مع ان الكود شغال تمام!

هل طريقتي هذي صحيحة؟

جافاسكربت

وشكرا 

كلمات دليلية: javascript جافاسكربت

الإجابة الصحيحة

ZaFaR97 • منذ 6 سنوات

لا أبدًا، يستحيل أن تكون طريقة يدويّة كهذه صحيحة.

جرّب الكود التالي:

moment().add(-1, 'days');

راجع هذا السؤال رجاءا

الإجابات (6)

ZaFaR97 • منذ 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'

 

يمكنك تجربة الكود هنا مباشرة

للإطلاع على نتائج أخرى من قوقل

عبدالله زاهر • منذ 6 سنوات

الاجابة رائعة وشكرا لإنك الهمتني الجواب

حللت المشكلة بهذي الطريقة وكانت كما اريد بالضبط

ولإنني استخدم moment الكود كان هكذا

 

النتيجة كانت

'2018-05-06'
عبدالله زاهر • منذ 6 سنوات

عدلت على الكود بسبب مشكلة تاريخ الشهر

وهذي النتيجة بعد التعديل!


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

هل الطريقة صحيحة؟

وشكرا جزيلا على التنبيه 🤗

ZaFaR97 • منذ 6 سنوات
الإجابة الصحيحة

لا أبدًا، يستحيل أن تكون طريقة يدويّة كهذه صحيحة.

جرّب الكود التالي:

moment().add(-1, 'days');

راجع هذا السؤال رجاءا

Ali Majrashi • منذ 6 سنوات

وعليكم السلام ورحمة الله وبركاته

دام انت تستخدم Moment.js ليش ماتسخدم الدوال الي توفرها لك بدل اعادة برمجة الآلية من جديد 

استخدم دالة subtract لحذف يوم 

مثال:

moment().subtract(1, 'day')

و هنا يعطيك قوة انك تقدر تنشئ اي تاريخ باستخدام دالة moment وتمرير اي تاريخ لها والحصول على اليوم الذي قبله باستخدام subtract

مثال:

moment('2017/11/6', 'YYYY/MM/DD').subtract(1, 'days').toString()

بالاخير استخدمت دالة toString لطباعة التاريخ الجديد

اتمنى ان تفيدك اجابتي 

عبدالله زاهر • منذ 6 سنوات

الله عليكم

مشكورين جدا

هذا الكود مشى معاي

let yester = moment().subtract(8, 'day').format('YYYY-MM-DD').toString();

 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !