大家好,我很困惑,因为我试图获得这个月的第一天,而当我试图提醒第一天时,它向我显示了以下消息:
Sun Sep 01 2019 00:00:00 GMT+0100 (BST)
但是在 console.log() 上像这样 2019-08-31T23:00:00.000Z
这是我的代码,我正在尝试了解如何正确获取每月的第一天
var dateD = new Date(), y = dateD.getFullYear(), m = dateD.getMonth();
var firstDay = new Date(y, m, 1);
alert(firstDay) // Sun Sep 01 2019 00:00:00 GMT+0100 (BST)
console.log(firstDay) // 2019-08-31T23:00:00.000Z
最佳答案
您在警报中看到的是本地时区的时间。您本地的时区是 BST(英国夏令时)。
您在控制台中看到的是相同的 UTC 日期/时间。由于字符串中的 Z,您可以看到这一点。 Z 表示这是 UTC。
所以,这两个字符串实际上代表相同的日期/时间,只是在不同的时区。它们确实代表您本地时区 (BST) 中月份的第一天。
当您使用 console.log(firstDay)
时,日期对象 firstDay
被发送到控制台。并且在控制台中显示该值的环境选择如何显示该值。您的环境似乎选择使用 firstDay.toISOString()
或 firstDay.toJSON()
在控制台中显示值。
如果您想要强制在控制台中看到与用户看到的相同的值,则将 Date
对象转换为字符串,然后再将其传递给 console.log
像这样:
console.log("" + firstDay); // Force string conversion before logging
在 StackOverflow 上将其作为嵌入式代码片段执行时,我可以看到不同之处:
var dateD = new Date(), y = dateD.getFullYear(), m = dateD.getMonth();
var firstDay = new Date(y, m, 1);
alert(firstDay)
console.log("Date object passed directly to log: ", firstDay)
console.log("Date object converted to string: " + firstDay)
关于javascript - 获取月份的第一天将仅在 alert() 上返回正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58137637/