Javascript 创建仅包含年份的日期对象
我习惯于使用第四种语法创建日期对象,如new Dateyear、month、day、hours、minutes、seconds、millizes;但最近我尝试将一个日期对象设置为仅一年为new Date2017,但正如您所料,它被视为一个值,并将年份视为毫秒数 是否有任何方法可以在不更改语法的情况下仍然轻松地使用年份,并期望正确设置日期?您可以将null作为第二个参数传递:Javascript 创建仅包含年份的日期对象,javascript,date,Javascript,Date,我习惯于使用第四种语法创建日期对象,如new Dateyear、month、day、hours、minutes、seconds、millizes;但最近我尝试将一个日期对象设置为仅一年为new Date2017,但正如您所料,它被视为一个值,并将年份视为毫秒数 是否有任何方法可以在不更改语法的情况下仍然轻松地使用年份,并期望正确设置日期?您可以将null作为第二个参数传递: new Date(2017, 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。