【问题标题】:Adding dates in JavaScript in one line在一行中添加 JavaScript 中的日期
【发布时间】:2010-02-25 21:09:10
【问题描述】:

我正在尝试在一行中使用 JavaScript 执行日期操作,但我遇到了年份问题(不是月份或日期)。我从这个link 得到了这个想法。我错过了什么吗?

代码如下:

var newyear = new Date((new Date()).getYear(), (new Date()).getMonth(), (new Date()).getDate()+5).getFullYear();
document.write(newyear);

这给了我“110”。

我不知道为什么? 谢谢!

【问题讨论】:

  • 为什么newyear现在才5天?
  • 奇怪的是,在 IE 7 中工作,产生“2010”。没有费心在其他浏览器中测试。
  • @jball:是的。 IE 总是脱颖而出。
  • 小测试表明 IE 对getYear()getFullYear() 的处理方式相同。不使用已弃用函数的更多理由。

标签: javascript datetime date


【解决方案1】:
(new Date()).getYear()

你应该在这里使用getFullYear()getYear() in JS means (year − 1900).

【讨论】:

    【解决方案2】:
    var newyear = new Date((new Date()).getFullYear(), (new Date()).getMonth(), (new Date()).getDate()+5).getFullYear();
    

    【讨论】:

      【解决方案3】:

      抛开千年虫问题,这是一个更简单的表达方式:

      var newyear = new Date(new Date().setDate(new Date().getDate()+5)).getFullYear()
      

      Date 对象相对昂贵,如果您不认为它必须是单个表达式,您可以使用单个 Date 对象和更少的代码来做到这一点。

      var d = new Date(); d.setDate(d.getDate()+5); var newyear = d.getFullYear()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 2014-04-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多