ما هي أبسط طريقة لتقليل التاريخ في Javascript بمقدار يوم واحد؟
-
09-06-2019 - |
سؤال
أحتاج إلى إنقاص تاريخ جافا سكريبت بمقدار يوم واحد، بحيث يعود عبر الأشهر/السنوات بشكل صحيح.بمعنى، إذا كان لدي تاريخ "اليوم"، فأنا أريد الحصول على تاريخ "أمس".
يبدو دائمًا أن الأمر يتطلب تعليمات برمجية أكثر من اللازم عندما أفعل ذلك، لذلك أتساءل عما إذا كانت هناك طريقة أبسط.
ما هي أبسط طريقة للقيام بذلك؟
[يحرر:فقط لتجنب الارتباك في الإجابة أدناه، هذا هو جافا سكريبت سؤال، وليس جافا.]
المحلول
var d = new Date();
d.setDate(d.getDate() - 1);
console.log(d);
نصائح أخرى
var today = new Date();
var yesterday = new Date().setDate(today.getDate() -1);
day.setDate(day.getDate() -1); //will be wrong
سيعود هذا في يوم خاطئ.تحت UTC -03:00، تحقق من ذلك
var d = new Date(2014,9,19);
d.setDate(d.getDate()-1);// will return Oct 17
استخدام أفضل:
var n = day.getTime();
n -= 86400000;
day = new Date(n); //works fine for everything
getDate()-1
يجب أن تفعل الخدعة
مثال سريع:
var day = new Date( "January 1 2008" );
day.setDate(day.getDate() -1);
alert(day);
origDate = new Date();
decrementedDate = new Date(origDate.getTime() - (86400 * 1000));
console.log(decrementedDate);
setDate(dayValue)
dayValue
هو عدد صحيح من 1 إلى 31، يمثل اليوم من الشهر.
من https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/setDate
يبدو أن السلوك الذي يحل مشكلتك (ومشكلتي) خارج نطاق المواصفات.
ما يبدو أن هناك حاجة إليه هو addDate() و addMonth() و addYear() ...المهام.
قد يكون العمل مع التواريخ في JS بمثابة صداع.لذا فإن أبسط طريقة هي الاستخدام moment.js لأي عمليات التاريخ.
لطرح يوم واحد:
const date = moment().subtract(1, 'day')