valueAsDate的功能似乎存在根本缺陷:
var date1 = new Date();
date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()); // input expects requires year, month, day
var input = document.createElement("input"); input.type = "date";
input.valueAsDate = date1;
var date2 = input.valueAsDate;
console.log(date1);
console.log(date2);
console.log(date1.getTime(), date2.getTime()); // EVEN THE UTC TIMESTAMP IS NOT EQUAL!!
我想设置一个本地日期,我想获取一个本地日期。在始终保持正确的Date类型(UTC或本地)的同时如何实现?
答案 0 :(得分:0)
<input type="date">
上显示的日期是UTC天。如果要将它们视为本地日期,则需要调整Date
对象:
var date1 = new Date(); // now
var input = document.createElement("input"); input.type = "date";
input.valueAsDate = new Date(Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate()));
var midnightUtcDate = input.valueAsDate;
var date2 = new Date(midnightUtcDate.getUTCFullYear(), midnightUtcDate.getUTCMonth(), midnightUtcDate.getUTCDate());
console.log(date1, date1.toLocaleDateString());
console.log(date2, date2.toLocaleDateString());