【问题标题】:javascript create date from year, month, dayjavascript从年、月、日创建日期
【发布时间】:2020-06-14 04:11:19
【问题描述】:

我正在尝试在javascript 中创建一个新的date

我有yearmonthday。按照this 教程,创建新date 的语法应该是:

new Date(year, month, day, hours, minutes, seconds, milliseconds)

这正是我正在做的:

var d = new Date(2016, 12, 17, 0, 0, 0, 0);

这应该是 2016 年 12 月 17 日,但在我的控制台输出中我看到:

Tue Jan 17 2017 00:00:00 GMT+0100 (Central Europe Standard Time)

我做错了什么?

【问题讨论】:

  • 月份从 0 开始。你应该使用这个:var d = new Date(2016, 11, 17);
  • 在 Javascript 日期对象中,月份是从 0 开始的。所以 0 表示 1 月,11 表示 12 月。试试var d = new Date(2016, 11, 17, 0, 0, 0, 0);应该没问题。

标签: javascript jquery


【解决方案1】:

一月是第 0 个月。十二月是第 11 个月。 所以这应该有效:

var d = new Date(2016, 11, 17, 0, 0, 0, 0);

另外,你可以简单地做:

var d = new Date(2016, 11, 17);

【讨论】:

【解决方案2】:

根据MDN - Date

表示月份的整数值,以 0 开头表示 12 月的 1 月至 11 日。

你应该从你的月份中减去 1:

const d = new Date(2016, 11, 17, 0, 0, 0, 0);

【讨论】:

  • 日期构造函数不接受整年。如果您输入2 年份,您将获得1902
  • 没错,100之前的任何年份都会以19xx为前缀
  • 我发现如果year需要一整年,你可以使用new Date(0).setFullYear(year, month, day)代替
  • 月份是从零开始的(即从年初开始的偏移量),而日期不是(从月初开始的偏移量)是否有根本原因?
  • 是的。这是作为 JavaScript 基础的旧语言的一些奇怪遗产。看到这个答案stackoverflow.com/a/2552517/3429323
猜你喜欢
  • 2015-10-10
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
相关资源
最近更新 更多