gpt4 book ai didi

javascript - 如何计算今天前三个月的 JavaScript 日期?

转载 作者:IT王子 更新时间:2023-10-29 02:38:16 26 4
gpt4 key购买 nike

我正在尝试形成一个比当前日期早 3 个月的日期。我通过以下代码获取当前月份

var currentDate = new Date();
var currentMonth = currentDate.getMonth()+1;

考虑到当月份是一月 (1) 时,日期前 3 个月将是十月,你们能给我提供计算和形成日期(日期 数据类型的对象)的逻辑吗(10)?

最佳答案

var d = new Date();
d.setMonth(d.getMonth() - 3);

这适用于一月份。运行此代码段:

var d = new Date("January 14, 2012");
console.log(d.toLocaleDateString());
d.setMonth(d.getMonth() - 3);
console.log(d.toLocaleDateString());


有一些警告......

一个月是一件奇怪的事情。你如何定义1个月? 30天?大多数人会说一个月前是指上个月的同一天 citation needed 。但超过一半的时间是 31 天前,而不是 30 天。如果今天是该月的 31 日(并且不是八月或十二月),则该月的这一天在上个月中不存在。

有趣的是,如果你问 Google,它会同意 JavaScript what day is one month before another day :

Google search result for 'one month before March 31st' shows 'March 3rd'

它还说 one month is 30.4167 days long : Google search result for 'one month in days' shows '30.4167'

那么,3 月 31 日之前的一个月与 3 月 28 日之前的一个月,即提前 3 天是同一天吗?这完全取决于您所说的“一个月前”是什么意思。去和你的产品负责人谈谈。

如果你想像 momentjs 那样做,并通过移动到该月的最后一天来更正这些月的最后一天错误,你可以这样做:

const d = new Date("March 31, 2019");
console.log(d.toLocaleDateString());
const month = d.getMonth();
d.setMonth(d.getMonth() - 1);
while (d.getMonth() === month) {
d.setDate(d.getDate() - 1);
}
console.log(d.toLocaleDateString());

如果您的要求比这更复杂,请使用一些数学知识并编写一些代码。你是开发者!您不必安装库!您不必从 stackoverflow 复制和粘贴!您可以自己开发代码来准确地满足您的需求!

关于javascript - 如何计算今天前三个月的 JavaScript 日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com