我想創建一個新的日期對象初始化爲從另一個函數傳入的日期。該方案將事先不知道所需的日期,但是我們要說的日期是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