如何获得当前日期前30天?

时间:2012-01-12 21:38:32

标签: javascript jquery

我有一个开始日历输入框和一个结束日历输入框。我们希望默认值在当前日期之前30天开始日历输入框,并且结束日历输入框为当前日期。这是我的约会对象。

var today = new Date(),
    dd    = today.getDate(),
    mm    = today.getMonth(),
    yyyy  = today.getFullYear(),
    month = ["January", "February", "March",
        "April", "May", "June", "July", "August",
        "September", "October" "November", "December"],
    startdate = month[mm] + ", " + yyyy.toString();

结束日期类似于var enddate = startdate - 30;显然这不起作用。

因此,如果当前日期是2011年12月30日,我希望开始日期为2011年12月1日。

编辑:我的问题得到了回答......有点儿。 Date.today();Date.today().add(-30);工作,但我需要January 13, 2012格式的日期。不是Fri Jan 13 2012 10:48:56 GMT -055 (EST)。有什么帮助吗?

更多编辑:截至撰写本文时,它是2018年。只需使用Moment.js即可。这是最好的。

15 个答案:

答案 0 :(得分:122)

试试这个

var today = new Date()
var priorDate = new Date().setDate(today.getDate()-30)

如@Neel所述,此方法以Javascript时间戳格式返回。要将其转换回日期对象,您需要将上面的内容传递给新的Date对象; new Date(priorDate)

答案 1 :(得分:119)

尝试使用优秀的Datejs JavaScript date library(不再保留原文,因此您可能会对this actively maintained fork感兴趣):

Date.today().add(-30).days(); // or...
Date.today().add({days:-30});

<强> [编辑]

另见优秀的Moment.js JavaScript date library

moment().subtract(30, 'days'); // or...
moment().add(-30, 'days');

答案 2 :(得分:70)

这是一个丑陋的解决方案:

var date = new Date(new Date().setDate(new Date().getDate() - 30));

答案 3 :(得分:34)

startDate = new Date(today.getTime() - 30*24*60*60*1000);

.getTime()方法返回一个标准的JS时间戳(自1970年1月1日以来的毫秒),您可以在其上使用常规数学运算,可以直接反馈给Date对象。

答案 4 :(得分:4)

简单的1个衬里 Vanilla Javascript 代码:

const priorByDays = new Date(Date.now() - days * 24 * 60 * 60 * 1000)

例如: days = 7 假设当前的date = Fri Sep 18 2020 01:33:26 GMT+0530

结果将是:Fri Sep 11 2020 01:34:03 GMT+0530

它的优点是您可以操纵它以得到所需类型的结果

  • 时间戳记:Date.now() - days * 24 * 60 * 60 * 1000

  • ISOString:new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString()

答案 5 :(得分:3)

let today = new Date()

let last30Days = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 30)

last30Days将在日期对象中

答案 6 :(得分:2)

JavaScript无需任何外部库即可进行处理。

var today = new Date();
var dateLimit = new Date(new Date().setDate(today.getDate() - 30));

document.write(today + "<br/>" + dateLimit)

答案 7 :(得分:1)

我使用date.js。它可以轻松处理这一问题并处理所有闰年的肮脏。

答案 8 :(得分:1)

我更喜欢时刻js

startDate = moment().subtract(30, 'days').format('LL')  // January 29, 2015

endDate = moment().format('LL'); // February 28, 2015

答案 9 :(得分:0)

容易

let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000);

ISOFormat吗?

let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();

答案 10 :(得分:0)

这是ES6版本

let date = new Date()
let newDate = new Date(date.setDate(date.getDate()-30))
console.log(newDate.getMonth()+1 + '/' + newDate.getDate() + '/' + newDate.getFullYear() )

答案 11 :(得分:0)

您可以使用Node JS中的moment通过1行代码简单地做到这一点。 :)

    let lastOneMonthDate = moment().subtract(30,"days").utc().toISOString()

不想使用UTC格式,EASIER:P

    let lastOneMonthDate = moment().subtract(30,"days").toISOString()

答案 12 :(得分:0)

从今天开始获取下一个30天

0.000000Hello
0.000000Hello
0.000000Hello
0.000000Hello
4.0000004.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000Hello
0.000000Hello
0.000000Hello
0.000000Hello
[(8, 0), (0, 0), (0, 0), (0, 0), ]
[(4, -4), (0, 0), (0, 0), (0, 0), ]
[(0, 0), (0, 0), (0, 0), (0, 0), ]
[(4, 4), (0, 0), (0, 0), (0, 0), ]
0.000000Hello
0.000000Hello
0.000000Hello
0.000000Hello
4.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000000.000000Hello
0.000000Hello
0.000000Hello
0.000000Hello
[(1, 1), (1, 1), (1, 1), (1, 1), ]
[(0.0625, -0.0625), (0.0625, -0.0625), (0.0625, -0.0625), (0.0625, -0.0625), ]
[(0.0625, -0.0625), (0.0625, -0.0625), (0.0625, -0.0625), (0.0625, -0.0625), ]
[(0.0625, -0.0625), (0.0625, -0.0625), (0.0625, -0.0625), (0.0625, -0.0625), ]

立即获取最近30天的表单

let now = new Date()
console.log(now)
let next30days = new Date(now.setDate(now.getDate() + 30))
console.log(next30days)

答案 13 :(得分:0)

如果您不愿意使用momentjs,可以使用以下方法:

let x = new Date()

x.toISOString(x.setDate(x.getDate())).slice(0, 10)

基本上,它获取当前日期(当前月份日期的数值),然后设置该值。然后将其转换为ISO格式,从中我可以截取纯数字日期(即2019-09-23)

希望它可以帮助某人。

答案 14 :(得分:0)

使用moment.js

let startDate =  moment().subtract(30, "days").format('YYYY-MM-DD'); //2021-05-18
let endDate = moment().format('YYYY-MM-DD'); //2021-06-17