jQuery / Javascript月份日期从当月减去

时间:2014-10-17 19:36:54

标签: javascript jquery

我正在尝试使用jquery / js代码,用户选择出生月份然后计算到下一个出生月份(从今天开始)?我是javascript的新手,无法弄清楚这个日期的东西..我一直得到一个无效的日期错误我希望用户选择一个月,它从现在减去()...来计算出剩下多少个月下一个生日。只是处理几个月而不用担心几天或几年......有什么建议吗?

get to the next birth month (from today)?

<select name="month1" id="month1" onchange="date()" size="1">
    <option value="0">January</option>
    <option value="1">February</option>
    <option value="2">March</option>
    <option value="3">April</option>
    <option value="4">May</option>
    <option value="5">June</option>
    <option value="6">July</option>
    <option value="7">August</option>
    <option value="8">September</option>
    <option value="9">October</option>
    <option value="10">November</option>
    <option value="11">December</option>
</select>



<script language="JavaScript">
    function date() {
        var birthmonth = new Date(month1.value);
        var today = new Date();
    }
    document.write("From "+birthmonth+" to "+today+" is "+datediff(birthmonth,today)+" day(s)<br>");
    </script>

2 个答案:

答案 0 :(得分:4)

使用Date对象的getter和setter方法。所以:

var d = new Date();
// today's month
var month = d.getMonth();
// set the month to January
d.setMonth(0);

这是根据所选值计算差异的一个非常基本的例子(使用jQuery 1.11):

http://jsfiddle.net/moj94ppe/

更新:修订版本计算到达出生月份的月份。

http://jsfiddle.net/moj94ppe/1/

更新:包含选项的修订版本。

http://jsfiddle.net/moj94ppe/4/

答案 1 :(得分:2)

我创建它来计算差异:

function date(obj) {
  var birthmonthDate = new Date();
  var birthmonth = new Date(birthmonthDate.setMonth(parseInt(obj.value, 10) - 1, 1));
  var today = new Date();
  console.log("From " + birthmonth + " to " + today + " is " + DateDiff.inDays(today, birthmonth) + " day(s)<br>");
}

var DateDiff = {

  inDays: function(d1, d2) {
    var t2 = d2.getTime();
    var t1 = d1.getTime();

    return parseInt((t2 - t1) / (24 * 3600 * 1000));
  },

  inWeeks: function(d1, d2) {
    var t2 = d2.getTime();
    var t1 = d1.getTime();

    return parseInt((t2 - t1) / (24 * 3600 * 1000 * 7));
  },

  inMonths: function(d1, d2) {
    var d1Y = d1.getFullYear();
    var d2Y = d2.getFullYear();
    var d1M = d1.getMonth();
    var d2M = d2.getMonth();

    return (d2M + 12 * d2Y) - (d1M + 12 * d1Y);
  },

  inYears: function(d1, d2) {
    return d2.getFullYear() - d1.getFullYear();
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="month" id="month" onchange="date(this)" size="1">
  <option value="01">January</option>
  <option value="02">February</option>
  <option value="03">March</option>
  <option value="04">April</option>
  <option value="05">May</option>
  <option value="06">June</option>
  <option value="07">July</option>
  <option value="08">August</option>
  <option value="09">September</option>
  <option value="10">October</option>
  <option value="11">November</option>
  <option value="12">December</option>
</select>
<br>

您可以在函数中传递此(指向DOM元素)以获取所选月份的值。

<强>参考

How to calculate date difference in javascript