首页 > 解决方案 > 为什么 .setHours(0,0,0,0) 会导致 T07:00:00.000Z

问题描述

我需要开始一天和一天结束。我一直在阅读,如果我要使用momentjs做约会的东西。虽然我现在可能会走这条路,但我认为我不需要那么多的日期操作,所以我会尽量不向这个项目添加比需要更多的 npm 包。我在读到您可以设置一天的开始日期,.setHours(0,0,0,0)但是当我在终端中尝试此操作时,我看到时间已设置为T07:00:00.000Z有人可以解释原因吗?感觉应该是T00:00:00.000Z

let date = new Date('2019-08-16T20:30:38Z');
date.setHours(0,0,0,0);
console.log(date);

标签: javascript

解决方案


我住在中央时区,UTC -5 每年的这个时候,所以当我运行它时我得到 T05:00:00.000Z。由于您居住在太平洋时区(大概),UTC -7,因此您将获得 UTC 早上 7 点。您正在设置本地时间,但以 UTC 格式输出时间。从文档(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setHours):

setHours() 方法根据本地时间设置指定日期的小时数,并返回从 1970 年 1 月 1 日 00:00:00 UTC 到更新的 Date 实例表示的时间的毫秒数


推荐阅读