Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建仅包含年份的日期对象_Javascript_Date - Fatal编程技术网

Javascript 创建仅包含年份的日期对象

Javascript 创建仅包含年份的日期对象,javascript,date,Javascript,Date,我习惯于使用第四种语法创建日期对象,如new Dateyear、month、day、hours、minutes、seconds、millizes;但最近我尝试将一个日期对象设置为仅一年为new Date2017,但正如您所料,它被视为一个值,并将年份视为毫秒数 是否有任何方法可以在不更改语法的情况下仍然轻松地使用年份,并期望正确设置日期?您可以将null作为第二个参数传递: new Date(2017, null); 然而,在不知道如何解释缺失值的细节的情况下,您认为现在会发生什么?日期是否会

我习惯于使用第四种语法创建日期对象,如new Dateyear、month、day、hours、minutes、seconds、millizes;但最近我尝试将一个日期对象设置为仅一年为new Date2017,但正如您所料,它被视为一个值,并将年份视为毫秒数

是否有任何方法可以在不更改语法的情况下仍然轻松地使用年份,并期望正确设置日期?

您可以将null作为第二个参数传递:

new Date(2017, null);
然而,在不知道如何解释缺失值的细节的情况下,您认为现在会发生什么?日期是否会用当前月份、日期、小时等初始化?还是别的什么


最好是显式的并传递所有参数,这样半年后您就可以知道代码在做什么了。

如果您传递的是单个参数号或字符串,则按照

价值观

表示自1月1日起的毫秒数的整数值, 1970 00:00:00 UTC,闰秒被忽略;但是考虑 大多数Unix时间戳函数以秒为单位

日期字符串

表示日期的字符串值。字符串的格式应为 由Date.parse方法IETF兼容RFC 2822识别 时间戳,也是ISO8601的一个版本

也按照

如果至少提供了两个参数,则缺少的参数为 如果缺少日期,则设置为1;对于所有其他日期,则设置为0

您可以将另一个参数传递为0、null或要设置的实际值

new Date(2017,0);
演示

var日期=新日期2017,0;
console.log日期 我还有一个建议。您只需创建一个常规日期对象并将其设置为年份。因此,至少您知道预期其他日期对象值是什么

var year = "2014";

var date = new Date();
date.setFullYear(year);

// console.log(year) => Wed Dec 27 2014 16:25:28 GMT+0200
进一步阅读-

始终使用“避免任何问题”。如果只想指定年份,请将month参数设置为0 January:

var d=新日期2017,0;
console.logd,d.getFullYear,d.getMonth,d.getDate;如果只提供一年,您希望设定什么日期?如果你确实有一个期望,那么为什么不提供相关的参数呢?这很可能失败,因为在世界上一半与时区相关的时间里,它将被转换为2016年。这是真的,但考虑到OP在他的问题中提出的限制,对此没有什么可以做的。正如我告诉@gurvinder372,这有时会创建一个2016年的日期。这似乎是最好的答案。如果您没有在字符串值中获取年份,只需使用year.toString。