javascript - Date.UTC() 返回上个月的最后一天,而 getUTCFullYear()、getUTCMonth() 正确返回正确月份的第一天

标签 javascript date utc

我得到了一个奇怪的结果:

   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 或者我遗漏了什么?

谢谢

最佳答案

您正在使用 UTC 时间创建一个日期,但随后您以本地时间显示它,这就是为什么它晚了几个小时。使用Date.prototype.toUTCString()查看 UTC 时间

  var date = new Date();
  var year = date.getMonth() < 11 ? date.getFullYear() : date.getFullYear() + 1;
  var month = date.getMonth() < 11 ? date.getMonth() + 1 : 0;

  // It's a UTC date, display it as UTC, not local time
  console.log(new Date(Date.UTC(year, month)).toUTCString());

  var utcYear = date.getUTCMonth() < 11 ? date.getUTCFullYear() : date.getUTCFullYear() + 1;
  var utcMonth = date.getUTCMonth() < 11 ? date.getUTCMonth() + 1 : 0;

  // Created using local time, you can just use the normal toString()
  console.log(new Date(utcYear, utcMonth));

关于javascript - Date.UTC() 返回上个月的最后一天,而 getUTCFullYear()、getUTCMonth() 正确返回正确月份的第一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30063445/

相关文章:

javascript - 当光标离开 div 区域时元素停止拖动

Javascript csom 访问页面属性

Java:自定义向当前日期添加 1 个月

Javascript 日期 - 设置 UTC 月份

javascript - UTC 日期转换为本地日期不起作用,Safari

javascript - React-native - 如何创建一个无限选择器

javascript - 使用 Javascript 在按钮单击时连续旋转图像

Swift SQLite 数据库如何插入日期字段

mysql - SQL Select - 复杂查询中的日期比较

python - Python 中的 UTCNow 偏移