我想创建一个新的日期对象初始化为从另一个函数传入的日期。该方案将事先不知道所需的日期,但是我们要说的日期是1月1日,2017年当我使用变量而不是整数或字符串时,为什么初始化日期对象失败?
成功:
var newYear = new Date(2017, 0, 1);
Logger.log(newYear.toISOString());
//logs 2017-01-01T08:00:00.000Z
不成功:
var date = "2017, 0, 1";
var newYear = new Date(date);
Logger.log(newYear.toISOString());
//throws "Error, date range is invalid."
不成功:
var date = "2017-0-1";
var newYear = new Date(date);
Logger.log(newYear.toISOString());
//throws "Error, date range is invalid."
编辑:就在发布之前,我想通了。我希望没有人介意我发布和回答我自己的问题 - 也许你可以更好地回答它!
请注意,强烈建议使用Date构造函数来解析字符串。总是手动解析字符串,库可以提供帮助,但通常不需要,因为2或3行函数就足够了。 – RobG
当你谈论手动解析字符串时,你的意思是像我下面给出的解决方案,还是我误解了你? –
是的。请注意,对于ISO 8601仅限日期的字段,某些浏览器会将它们解析为本地,有些则为UTC(有些会根据UTC版本改变主意),有些浏览器根本不会解析它们,因此手动是唯一方法。一个库可以提供帮助,但它可以通过3行验证进行解析(不含混淆)。 – RobG