Fla*_*dun 1 javascript google-apps-script
我试图通过提供年,月和日参数来获取日期new Date().像这样:
Logger.log(dates[i]);
var date = dates[i].trim();
Logger.log(date);
var dateMDY = date.split("/");
Logger.log(dateMDY);
Logger.log(parseInt(dateMDY[2], 10));
Logger.log(parseInt(dateMDY[0], 10));
Logger.log(parseInt(dateMDY[1], 10));
var finalDate = new Date(parseInt(dateMDY[2]), parseInt(dateMDY[0])-1, parseInt(dateMDY[1]));
Logger.log(finalDate);
Run Code Online (Sandbox Code Playgroud)
这是日志输出:
[16-09-12 09:57:57:047 PDT] 09/24/2016
[16-09-12 09:57:57:048 PDT] 09/24/2016
[16-09-12 09:57:57:048 PDT] [09, 24, 2016]
[16-09-12 09:57:57:049 PDT] 2016.0
[16-09-12 09:57:57:050 PDT] 9.0
[16-09-12 09:57:57:050 PDT] 24.0
[16-09-12 09:57:57:051 PDT] Wed Dec 31 19:00:00 GMT-05:00 1969
[16-09-12 09:57:57:711 PDT] 09/28/2016
[16-09-12 09:57:57:712 PDT] 09/28/2016
[16-09-12 09:57:57:712 PDT] [09, 28, 2016]
[16-09-12 09:57:57:713 PDT] 2016.0
[16-09-12 09:57:57:713 PDT] 9.0
[16-09-12 09:57:57:714 PDT] 28.0
[16-09-12 09:57:57:715 PDT] Wed Dec 31 19:00:00 GMT-05:00 1969
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?!
问题是parseInt("09")没有基数.
令人震惊的是,parseInt在谷歌应用程序脚本(不是,相当,JavaScript)仍然将字符串中的前导0视为八进制.(这在JavaScript规范中从未出现过,但有些引擎实现了它;最终它被明确禁止.)当然,八进制没有9数字,并且parseInt在第一个不可解析的数字处停止解析,NaN如果没有可解析的数字则返回.所以parseInt("09")回报NaN,你最终会传递一个到构造为一个月(自NaN - 1IS NaN).
如果指定十进制基数(您在Logger.log各个部分的语句中执行,但在实际构建日期时没有!),它将解析"09"为9:
Logger.log(dates[i]);
var date = dates[i].trim();
Logger.log(date);
var dateMDY = date.split("/");
Logger.log(dateMDY);
Logger.log(parseInt(dateMDY[2], 10));
Logger.log(parseInt(dateMDY[0], 10));
Logger.log(parseInt(dateMDY[1], 10));
var finalDate = new Date(parseInt(dateMDY[2], 10), parseInt(dateMDY[0], 10)-1, parseInt(dateMDY[1], 10));
// -----------------------------------------^^^^----------------------^^^^-------------------------^^^^
Logger.log(finalDate);
Run Code Online (Sandbox Code Playgroud)
输出:
[16-09-12 19:02:15:137 BST] 09/24/2016 [16-09-12 19:02:15:138 BST] [09, 24, 2016] [16-09-12 19:02:15:138 BST] 2016.0 [16-09-12 19:02:15:139 BST] 9.0 [16-09-12 19:02:15:140 BST] 24.0 [16-09-12 19:02:15:140 BST] Sat Sep 24 00:00:00 GMT+01:00 2016
(通过逐步调试GAS调试器中的代码来解决这个问题.)
| 归档时间: |
|
| 查看次数: |
289 次 |
| 最近记录: |