新的Date()函数为特定月份创建无效日期(仅限9月,10月)

时间:2017-02-14 19:23:01

标签: google-apps-script

我正在使用Google App Script中的日期字符串。我将字符串转换为日期对象,但在特定日期有困难。

以下代码为8月,9月,10月和11月创建4个日期,并使用新的Date()将它们转换为日期。

function myFunction() {
  var date1 = "2016-07-18T13:44:00.000+0000";    
  var date2 = "2016-08-01T13:44:00.000+0000";      
  var date3 = "2016-09-01T13:44:00.000+0000";      
  var date4 = "2016-10-01T13:44:00.000+0000";

  var fizedDate1 = dateFix(date1);      
  var fizedDate2 = dateFix(date2);    
  var fizedDate3 = dateFix(date3);    
  var fizedDate4 = dateFix(date4);

  return 0;
}

function dateFix(date){
  var fixedDate = new Date(date.slice(0,4),parseInt(date.slice(5,7)),date.slice(8,10),parseInt(date.slice(11,13)),date.slice(14,16),date.slice(17,19));
  return fixedDate;
}

但是,正如下面的调试器所示,9月(08)和10月(09)的日期是无效日期。

Link to debugger showing invalid dates

我已经尝试更改新Date()的所有其他参数的数字,但只有月份,而且只有输入08和09才会创建无效日期。

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Google Apps脚本与parseInt(" 08")和parseInt(" 09")有一个奇怪的错误,您可以通过指定parseInt来处理小数来修复它,例如parseInt (" 08" 10):

function myFunction() {
  var date1 = "2016-07-18T13:44:00.000+0000";    
  var date2 = "2016-08-01T13:44:00.000+0000";      
  var date3 = "2016-09-01T13:44:00.000+0000";      
  var date4 = "2016-10-01T13:44:00.000+0000";

  var fizedDate1 = dateFix(date1);      
  var fizedDate2 = dateFix(date2);    
  var fizedDate3 = dateFix(date3);    
  var fizedDate4 = dateFix(date4);

  return 0;
}

function dateFix(date){
  var fixedDate = new Date(date.slice(0,4),parseInt(date.slice(5,7),10),date.slice(8,10),parseInt(date.slice(11,13),10),date.slice(14,16),date.slice(17,19));
  return fixedDate;
}