Как создать функцию, которая может возвращать разницу в дате в javascript?
-
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
скрипт является необязательным и не включен в скомпилированные / build / версии.Вы можете загрузить его непосредственно с Репозиторий 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');