【发布时间】:2015-05-05 21:22:24
【问题描述】:
我得到了一个奇怪的结果:
var date = new Date();
var year = date.getMonth() < 11 ? date.getFullYear() : date.getFullYear() + 1;
var month = date.getMonth() < 11 ? date.getMonth() + 1 : 0;
console.log(new Date(Date.UTC(year, month)));
var utcYear = date.getUTCMonth() < 11 ? date.getUTCFullYear() : date.getUTCFullYear() + 1;
var utcMonth = date.getUTCMonth() < 11 ? date.getUTCMonth() + 1 : 0;
console.log(new Date(utcYear, utcMonth));
对于我使用的特定日期(任何日期都可以),Date.UTC 给了我:
2015 年 5 月 31 日星期日 19:00:00 GMT-0500(中部夏令时间)
getUTC... 方法给了我:
2015 年 6 月 1 日星期一 00:00:00 GMT-0500(中部夏令时间)
我是误用 Date.UTC 还是遗漏了什么?
谢谢
【问题讨论】:
-
是的,您在滥用
Date.UTC,因为您将本地值传递给它(并且您在滥用new Date,因为您将utc 值传递给它)。你到底想在这里做什么? -
感谢您的回复。这是一种以 UTC 时间返回日期对象的角度服务。此代码用于获取下个月的第一天(每月重复出现,直到下个月才能开始)。
-
JS
Date对象没有附加时区,它们只是绝对时间戳。对于显示,您可以使用 UTC 或本地get…和to…String方法。
标签: javascript date utc