ما هي أبسط طريقة لتقليل التاريخ في Javascript بمقدار يوم واحد؟

StackOverflow https://stackoverflow.com/questions/31931

  •  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')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top