使用 javascript 格式化和计算日期

Formatting and Calculating dates with javascript

我是 javascript 的新手,我正在尝试生成一个日期:

A​​.) 格式化 (mm/dd/yyyy)

B.)显示为比实际日期晚三个月

我拼接了一些我能找到的东西,似乎可以 return 正确的日期,但我担心它会在今年晚些时候坏掉。有没有更好的方法来完成我想做的事情?脚本如下,在此先感谢您的帮助。

<script type="text/javascript">

  var dt = new Date();
  var month = dt.getMonth();
  var day = dt.getDate();
  var year = dt.getFullYear();

   if (month == 9) { var dt = new Date();
      var month = dt.getMonth()-8;
      var day = dt.getDate();
      var year = dt.getFullYear();
      var next_year = dt.getFullYear()+1;
      document.write(month + '-' + day + '-' + next_year)}

   else if (month == 10) { var dt = new Date();
      var month = dt.getMonth()-8;
      var day = dt.getDate();
      var year = dt.getFullYear();
      var next_year = dt.getFullYear()+1;
      document.write(month + '-' + day + '-' + next_year)}

   else if (month == 11) { var dt = new Date();
      var month = dt.getMonth()-8;
      var day = dt.getDate();
      var year = dt.getFullYear();
      var next_year = dt.getFullYear()+1;
      document.write(month + '-' + day + '-' + next_year)}

   else { var dt = new Date();
      var month = dt.getMonth()+4;
      var day = dt.getDate();
      var year = dt.getFullYear();
      document.write(month + '-' + day + '-' + year);}
  </script>

您无需担心处理一年中的最后三个月。将三个月添加到导致它 'overflow' 的日期会将其正确设置为明年(例如,将三个月添加到 2015 年 11 月将产生 2016 年 2 月的日期)。

var dt = new Date();
dt.setMonth(dt.getMonth() + 3);
document.write((dt.getMonth() + 1) + "-" + dt.getDate() + "-" + dt.getFullYear();

就其价值而言,您的代码看起来是正确的。只是不必要的复杂。

日期对象的方法不仅可以设置月、日和年,还可以获取。

function getMyDate() {
  var date = new Date();

  date.setMonth(date.getMonth() + 3);

  return (date.getMonth() + 1) + '-' + date.getDate() + '-' + date.getFullYear();
}
document.write(getMyDate());

P.S。 var 的范围是函数,而不是块 {}。因此,如果您在范围顶部声明了 var dt,则不得在 if 语句中使用 var dt。这是一个错误。

要打印今天的日期,您应该连接日期值:

var d = new Date();
var str = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();

如果您想在日期中增加月份:

var d = new Date();
var threeMonthsFromToday = new Date(new Date(d).setMonth(d.getMonth()+3));
var str = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();