我将Date字符串设置为从午夜开始的毫秒,如:
var date = new Date("2017-12-14").setUTCHours(0,0,0,0)
现在日期= 1513209600000;即,2017年12月14日星期四00:00:00 。这正是我想要从午夜或当天开始,即午夜开始约会的方式。
但是当我试图在Date对象中再次将此时间戳转换为时,它不会保留小时格式,例如:
var dateObj = new Date(date); // Thu Dec 14 2017 05:30:00 GMT+0530 (IST)
我希望 dateObj 的日期和时间从午夜开始。任何人都可以在这里建议我到底做错了什么?提前谢谢。
答案 0 :(得分:3)
日期对象保留其值,您看到的是浏览器在本地时区中对该日期的表示。请尝试dateObj.toUTCString()
阅读原始值。
答案 1 :(得分:0)
我认为使用应该将setUTCHours更改为setHours
char*[]
答案 2 :(得分:0)
根据EMCA-262,ISO 8601格式的日期字符串(如“2017-12-14”)将由内置解析器解析为UTC(与ISO 8601相反),时间将设置为00:00 :00 UTC所以不需要将小时数归零。
所以:
var date = new Date("2017-12-14").setUTCHours(0,0,0,0)
setUTCHours 调用是多余的。
由于你是+05:30,那么从当地午夜到05:30,UTC日期将是前一天。
如果要将“2017-12-14”解析为本地日期,时间设置为00:00:00,则可以:
案例1:
function parseISOLocal(s) {
var b = s.split(/\D/);
return new Date(b[0], --b[1], b[2]);
}
var s = "2017-12-14";
console.log(parseISOLocal(s).toString());
案例2:
var s = "2017-12-14";
// Parsed as UTC
var d = new Date(s);
// Adjust for host timezone
d.setUTCMinutes(d.getUTCMinutes() + d.getTimezoneOffset());
// Show local date
console.log(d.toString());