在JavaScript中将日期转换为UTC日期的奇怪行为

时间:2015-06-16 02:01:09

标签: javascript

我有一个代表日期的数字列表。这些数字按升序顺序排列。对于每个数字,我首先将其转换为JavaScript Date对象,然后从Date对象转换为UTC日期。问题是UTC日期不按顺序排序(查看控制台日志,468028800000小于468547200000)。这段代码出了什么问题?

var dates = [
  469342800000, 469429200000, 469515600000,
  469602000000, 469688400000, 469774800000
];

for (var i = 0; i < dates.length; i++) {
  var d = new Date(dates[i]);
  var dateUTC = Date.UTC(d.getFullYear(), d.getMonth(), d.getDay());
  console.log(dates[i], d, dateUTC);
}

1 个答案:

答案 0 :(得分:4)

问题在于这一行:

var dateUTC = Date.UTC(d.getFullYear(), d.getMonth(), d.getDay());

getDay()为您提供一周中的某一天,而不是该月的某一天。你想要getDate()