كيفية إنشاء دالة يمكن أن ترجع الفرق في تاريخ JavaScript؟

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

  •  23-09-2019
  •  | 
  •  

سؤال

لقد قمت بإنشاء وظيفة أدناه للحصول على فرق التاريخ بين تاريخين .. تحقق من أنه صحيح وكذلك كيفية العثور على رقم شهر (اضرب في 30 أو 31؟) والسنة ..

function days_between(date1, date2,datepart) {

// The number of milliseconds in one day
 var ONE_DAY=0;
 if ( datepart === undefined ) {
  datepart = 'D';
}

 if(datepart='Y')
 {     
 ONE_DAY = 1000 * 60 * 60 * 24 * 30 *12
 }
 else if (datepart='M')
 {
 ONE_DAY = 1000 * 60 * 60 * 24 * 30
 }
 else
 {
 ONE_DAY = 1000 * 60 * 60 * 24   //for day
 }

// Convert both dates to milliseconds
var date1_ms = date1.getTime()
var date2_ms = date2.getTime()

// Calculate the difference in milliseconds
var difference_ms = Math.abs(date1_ms - date2_ms)

// Convert back to days and return
return Math.round(difference_ms/ONE_DAY)

}

هل كانت مفيدة؟

المحلول

إذا كان تطبيقك سيتطلب الكثير من طرق معالجة التاريخ ، فقد ترغب في التفكير في استخدام شيء مثل Datejs مكتبة.

إذا قمت بتضمين time.js من مكتبة DateJS ، ستتمكن من القيام بما يلي:

var future = new Date().add({months: 5}); 
var now = new Date();

var span = new TimeSpan(future - now);

console.log("Days: ", span.getDays());

ال time.js البرنامج النصي اختياري ولا يتم تضمينه في الإصدارات المترجمة / البناء. يمكنك تنزيله مباشرة من مستودع SVN.

نصائح أخرى

يجب أن تتحول في أيام بعد إحداث الفرق ليس من قبل. يحب:

var d1 = new Date().getTime(),
d2 = new Date(2010, 11, 31).getTime();
alert(Math.round((d2-d1)/24/60/60/1000) + ' days left for 2010');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top