日期转换和比较关闭12天

时间:2016-05-13 19:24:43

标签: javascript

我的日期是typeof字符串,格式为" 5/12 / 2016"。我想转换为日期对象,添加90天并比较日期...即。检查原始日期是否小于添加了90天的新日期。

我将日期字符串传递给Date构造函数以获取日期对象,然后使用90天内传递的setDate方法。我回来的日期是未来78天,而不是90天。我错过了什么?

Options +FollowSymLinks -MultiViews

RewriteEngine On

# Set default page for a directory to index.php
DirectoryIndex index.php

# Redirect to www
RewriteCond %{HTTP_HOST} ^rajiviyer.in [NC]
RewriteRule ^(.*)$ http://www.rajiviyer.in/$1 [R=301,L]

感谢。

4 个答案:

答案 0 :(得分:0)

我认为setDate()正在做你认为的事情。根据{{​​3}},setDate()方法设置Date对象相对于当前设置月份开头的日期。

尝试这样的事情,或许:

Date.prototype.addDays = function(days){
    this.setDate(this.getDate() + days);
    return this;
};

var startDatePlusNinetyDays = convertedStartDate.addDays(90);

答案 1 :(得分:0)

当您执行var startDatePlusNinetyDays = convertedStartDate.setDate(90);时,日期设置为90,而不是递增日期。

它增加78天的原因是因为初始日期为12(如5月12日所示),您将其设置为9090 - 12为{{} 1}}。

尝试

78

将采用转换后的开始日期并添加90天(以毫秒为单位)

答案 2 :(得分:0)

setDate(90)未添加90天的日期,它只是将当月的日期设置为90,因此它将日期设置为2016年5月90日。当然,可能没有90天,这意味着转换到6月59日,也就是6月底,然后翻译为7月29日。

如果您想要将日期添加到日期,请获取原始日期的月份,将其添加90,然后在setDate()中使用该日期。

var startDatePlusNinetyDays = convertedStartDate.setDate(convertedStartDate.getDate() + 90);

答案 3 :(得分:0)

添加日期时,您可能需要考虑使用以下约定,该约定与您当前的方法略有不同:

// This will add a specific number of days to the existing date
function addDays(d, days) {
    var newDate = new Date();
    newDate.setDate(newDate.getDate() + days);
    return newDate;
}

这与仅使用setDate()函数不同,后者设置了当前相对当前月份,可以在此示例中看到并在下面进行说明:

enter image description here



<!DOCTYPE html>
<html>

<head>
  <script src="https://code.jquery.com/jquery-2.1.4.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>

<body>
  <table id='testing'>
    <tr>
      <th>Days Added</th>
      <th>Using setDate(days)</th>
      <th>Using setDate(getDate() + days)</th>
    </tr>
  </table>
  <script>
    $(function() {
      var start = "5/12/2016";
      for (var i = 1; i <= 90; i++) {
        // Using setDate() alone
        var setDate = new Date(new Date(start).setDate(i));
        // Using getDate() + i
        var getDate = addDays(new Date(start), i);
        // Add rows
        $("#testing").append('<tr><td>' + i + '</td><td>' + format(setDate) + '</td><td>' + format(getDate) + '</td></tr>');
      }

      // This will add a specific number of days to the existing date
      function addDays(d, days) {
        var newDate = new Date(d);
        newDate.setDate(newDate.getDate() + days);
        return newDate;
      }

      // Format for example purposes
      function format(d) {
        return (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
      }
    })
  </script>
</body>

</html>
&#13;
&#13;
&#13;

您很快就会注意到,使用现有方法添加一天时,结果为5/1/2016,因为它将日期设置为该月的第一天,而不是将其添加到现有日期。由于您从5/12/2016开始,表示两个结果之间大约有12天的差异,这与您的体验相似。