javascript - 使用 javascript 计算日期与开始日期和天数

标签 javascript ajax datetime

我正在尝试根据开始日期和天数计算日期,因此基本上将天数添加到开始日期并获取结束日期。问题是我得到了一些奇怪的结果,但只有一次,我已经花了几天时间试图弄清楚这个结果。

功能是:

CallculateDateFromDays = function(startDate, days) {
var policy_start_date_array = startDate.split("-");
var policy_start_date = new Date(policy_start_date_array[2], policy_start_date_array[1]-1, policy_start_date_array[0]);
var policy_start_date_add = new Date(policy_start_date.getTime() + ((days-1) * 24 * 60 * 60 * 1000));
var dateString = ("0" + (policy_start_date_add.getDate())).slice(-2) + "-" + ("0" + (policy_start_date_add.getMonth()+1)).slice(-2) + "-" + policy_start_date_add.getFullYear();
return dateString;}

问题是它一直有效,直到我使用日期“28-10-2012”,即使我添加 2 天,它也会返回相同的日期。

任何想法,我都被难住了。

最佳答案

您的本地时区可能会因夏令时结束而发生变化。

> new Date(2012, 9, 28)
Sun Oct 28 2012 00:00:00 GMT+0200
> // 48 hours later:
> new Date(new Date(2012, 9, 28) + 2 * 24 * 60 * 60 * 1000)
Mon Oct 29 2012 23:00:00 GMT+0100

始终使用 UTC 方法!

顺便说一句,使用 setDate 添加天数要容易得多,它也可以解决时区问题:

function calculateDateFromDays(startDate, days) {
    var datestrings = startDate.split("-"),
        date = new Date(+datestrings[2], datestrings[1]-1, +datestrings[0]);
    date.setDate(date.getDate() + days);
    return [("0" + date.getDate()).slice(-2), ("0" + (date.getMonth()+1)).slice(-2), date.getFullYear()].join("-");
}

关于javascript - 使用 javascript 计算日期与开始日期和天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12885743/

相关文章:

javascript - 使用 php 从 ajax 检索发布的数据

c# - 如何将 sqldatetime.minvalue 转换为日期时间?

javascript - 两张照片放在一起。在悬停时显示一个。可以用 css 还是只用 javascript?

javascript - 有什么方法可以强制委托(delegate) Iframe 内容的工作吗?

javascript - 如何使用 promises 对对象数组的每个元素进行 ajax 调用?

ajax - 第二次提交时,TinyMCE 在 bean 中的值(使用 jsf.ajax.addOnEvent)

javascript - Jquery 选项卡不工作和 Jquery 切换冲突?

javascript - 如何使 toggleClass 仅应用于单击的元素

python - 为什么我不能继承 datetime.date?

javascript - 使用 IntlDateTimeFormat 返回 AM/PM