小编典典

如何计算两个日期之间的天数?

all

例如,给定输入框中的两个日期:

<input id="first" value="1/1/2000"/>
<input id="second" value="1/1/2001"/>

<script>
  alert(datediff("day", first, second)); // what goes here?
</script>

如何在 JavaScript 中获取两个日期之间的天数?


阅读 312

收藏
2022-03-13

共1个答案

小编典典

这是一个 快速而肮脏
的实现datediff,作为解决问题中提出的问题的概念证明。它依赖于这样一个事实,即您可以通过减去它们来获得两个日期之间经过的毫秒数,这会将它们强制转换为其原始数值(自
1970 年初以来的毫秒数)。

// new Date("dateString") is browser-dependent and discouraged, so we'll write

// a simple parse function for U.S. date format (which does no error checking)

function parseDate(str) {

    var mdy = str.split('/');

    return new Date(mdy[2], mdy[0]-1, mdy[1]);

}



function datediff(first, second) {

    // Take the difference between the dates and divide by milliseconds per day.

    // Round to nearest whole number to deal with DST.

    return Math.round((second-first)/(1000*60*60*24));

}



alert(datediff(parseDate(first.value), parseDate(second.value)));


<input id="first" value="1/1/2000"/>

<input id="second" value="1/1/2001"/>

您应该知道“正常”日期
API(名称中没有“UTC”)在用户浏览器的本地时区中运行,因此通常如果您的用户处于您不使用的时区,您可能会遇到问题期望,并且您的代码将不得不处理夏令时转换。您应该仔细阅读
Date 对象及其方法的文档,对于任何更复杂的内容,强烈考虑使用为日期操作提供更安全和强大 API 的库。

此外,出于说明目的,代码片段为了简洁起见对对象使用命名访问window,但在生产中,您应该使用标准化
API,例如getElementById,或者更有可能使用一些 UI 框架。

2022-03-13