Javascript new Date()返回1969年12月31日
Javascript new Date() returns 31 Dec 1969
我试图通过向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);
日志输出如下:
[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
我做错了什么?
问题是没有基数的parseInt("09")
令人震惊的是,parseInt
在谷歌应用程序脚本(这不是,相当,JavaScript)仍然把一个字符串的前导0作为八进制的意思。(这从来没有在JavaScript规范中,但一些引擎实现了它;最终它被明确禁止了。)当然,八进制没有9
数字,parseInt
在第一个不可解析的数字处停止解析,如果没有可解析的数字则返回NaN
。因此,parseInt("09")
返回NaN
,最终将其作为月份传递给构造函数(因为NaN - 1
是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);
输出:<>之前[16-09-12 19:02:15:37] 09/24/2016[16-09-12 19:02:15:138] [09, 24, 2016][16-09-12 19:02:15:138] [au:[16-09-12 19:02:15:139] [au:[16-09-12 19:02:15:40] [au:[16-09-12 19:02:15:14] 2016年9月24日(星期六)00:00:00 GMT+01:00之前(通过在GAS调试器中逐步执行代码发现了这一点)
相关文章:
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- 如何获得Bootstrap Datepicker的年和月,因为它在变化
- 2012年12月迁移在App Dashboard中不可用
- JavaScript函数,用于计算两个日期之间的年、月和天数
- JS:如何将字符串(“2015年3月10日”)转换为Date对象
- Highchart UTC日期始终设置为1970年1月1日
- jquery与ajax控制工具包冲突2013年9月/10月发布
- 使用年、月、日期、小时、秒格式每分钟刷新一次图像
- Regexp日期格式为“;2005年5月10日”;javascript
- 具有年和月的字符串的排序数组
- 自 2012 年 6 月 12 日以来,“未定义”随机附加到我网站上 1% 的请求 URL 中
- YouTube iFrame API:设置原点中断视频事件+VEVO不't工作-2015年12月
- 如何用javascript将2015年11月18日12:00:00 GMT+0530(斯里兰卡标准时间)转换为(yyyy
- 用javascript将日期格式化为2000年1月12日下午12:30
- 为这个字符串创建一个正则表达式:2005年12月3日
- 日期格式2010年6月23日12:00 AM
- 用javascript将2012年5月13日12:00:00 AM转换为2012年5月13日
- Javascript new Date()返回1969年12月31日
- 如何将1991年12月2日12:00AM转换为1991年2月12日
- Javascript日期格式/parse toString() ' 2012年12月1日'