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

Jes*_*son 83 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();
Run Code Online (Sandbox Code Playgroud)

结束日期将是类似的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.这是最好的.

Ror*_*san 131

试试这个

var today = new Date()
var priorDate = new Date().setDate(today.getDate()-30)
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,此方法以Javascript时间戳格式返回.要将其转换回日期对象,您需要将上面的内容传递给`new Date(priorDate)` (13认同)
  • 不使用外部库我最喜欢这个解决方案.谢谢. (12认同)
  • 有时你只想要没有库的普通 js!谢谢 :) (2认同)

mae*_*ics 130

尝试使用优秀的Datejs JavaScript日期库(不再维护原始文件,因此您可能对这个主动维护的fork感兴趣):

Date.today().add(-30).days(); // or...
Date.today().add({days:-30});
Run Code Online (Sandbox Code Playgroud)

[编辑]

另请参阅优秀的Moment.js JavaScript日期库:

moment().subtract(30, 'days'); // or...
moment().add(-30, 'days');
Run Code Online (Sandbox Code Playgroud)

  • 我使用了`moment()`方法并附加了`toDate()`方法来获取JavaScript日期对象.谢谢! (3认同)
  • 我努力在今天之前和之后的30天(无时间)获得开始和结束日期。这起作用了:`moment(moment()。subtract(30,'days')).format(“ YYYY-MM-DD”)` (2认同)
  • 为什么需要为此使用库?太疯狂了 (2认同)

Nah*_*ahn 76

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

var date = new Date(new Date().setDate(new Date().getDate() - 30));
Run Code Online (Sandbox Code Playgroud)

  • 非常有趣,这是最好的解决方案. (21认同)
  • 同意 - 这是最好的解决方案.这完全是*Rory McCrossan答案的解决方案 - 但简洁,完整(无需外部库). (5认同)
  • @MarkRogers"搞笑"是正确的词.JavaScript日期真的很荒谬. (4认同)

Mar*_*c B 35

startDate = new Date(today.getTime() - 30*24*60*60*1000);
Run Code Online (Sandbox Code Playgroud)

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

  • +1一,但我会挑选像闰秒等的烦恼. (3认同)

Was*_*siF 12

从今天开始接下来的 30 天

let now = new Date()
console.log('Today: ' + now.toUTCString())
let next30days = new Date(now.setDate(now.getDate() + 30))
console.log('Next 30th day: ' + next30days.toUTCString())
Run Code Online (Sandbox Code Playgroud)

今天获取过去 30 天的表格

let now = new Date()
console.log('Today: ' + now.toUTCString())
let last30days = new Date(now.setDate(now.getDate() - 30))
console.log('Last 30th day: ' + last30days.toUTCString())
Run Code Online (Sandbox Code Playgroud)


Fre*_*ddy 7

Javascript 可以在没有任何外部库的情况下处理它。

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

document.write(today + "<br/>" + dateLimit)
Run Code Online (Sandbox Code Playgroud)


Chr*_*des 6

简单的 1 行Vanilla Javascript代码:

const priorByDays = new Date(Date.now() - days * 24 * 60 * 60 * 1000)
Run Code Online (Sandbox Code Playgroud)

例如: 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

  • ISO字符串: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString()


man*_*mar 5

简单。(Using Vanilla JS)

let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000);
Run Code Online (Sandbox Code Playgroud)

ISO格式?

let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
Run Code Online (Sandbox Code Playgroud)


Kev*_*dra 5

let today = new Date()

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

last30Days将在日期对象中