jquery getday()给了我错误的一天?

时间:2016-07-12 15:58:55

标签: jquery

我有一个日期选择器下拉列表

<input type="date" class="date">

我使用jquery

获取星期几
function dateFunction() {
    $(".date").on('change', function () {
        var d = $('.date').val();
        var dm = new Date(d);
        var n = dm.getDay();
        alert(n);

    });
}

当我选择星期二时,警报是1?

难道不是2吗?

2 个答案:

答案 0 :(得分:1)

如果预期结果为星期二2,则可以创建对象,使用Date.prototype.toUTCString()String.prototype.slice()

&#13;
&#13;
var days = {
  Sun: 0,
  Mon: 1,
  Tue: 2,
  Wed: 3,
  Thu: 4,
  Fri: 5,
  Sat: 6
};

function dateFunction() {
  $(".date").on("change", function() {
    var day = days[this.valueAsDate.toUTCString().slice(0,3)];
    alert(day);
  });
}

dateFunction()
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="date" class="date">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

来自https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay

  

getDay()返回的值是一个对应于星期几的整数:0表示星期日,1表示星期一,2表示星期二,依此类推。

来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

语法可以用作new Date(dateString);

  

<强> dateString   表示日期的字符串值。字符串应采用Date.parse()方法识别的格式(符合IETF的RFC 2822时间戳和ISO8601的版本)。   注意:由于浏览器的差异和不一致,强烈建议不要使用Date构造函数(和Date.parse,它们是等效的)解析日期字符串。

这就是说,(1)预计星期二由数字2表示,(2)不鼓励使用新的Date(dateString)。更好的选择是将日期输入的值解析为年/月/日并使用new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);语法。