如何修复此日期类型验证错误?

时间:2014-03-15 18:46:41

标签: javascript date datetime google-apps-script

我有这个功能:

function replaceKeys(documentClass, headersArr, personDataArr){
 for(var i = 0; i<headersArr.length; i++){
  var key = ":" + headersArr[i] + ":";
  var newString = personDataArr[i];
   Logger.log("newString ="+newString);
   Logger.log("(newString instanceof Date) ="+(newString instanceof Date));   
   Logger.log("typeof  newString ="+ ( typeof newString));
   if(newString instanceof Date) {
       newString = newString.getDate() + '/' + (newString.getMonth() + 1) + '/' + newString.getFullYear();
     Logger.log("newString after if = "+newString);
      }     
  replaceString(documentClass, key, newString);
   Logger.log(" ");
  }
}

哪个不起作用,因为日期存储为字符串,如此日志中所示:

enter image description here

数据存储在Google电子表格中。然后,stringfied并存储在ScriptProperties中(只接受字符串),之后,恢复为字符串数组。

我尝试过这样的事情:if(new Date (newString) instanceof Date)但是当字符串无法与日期格式对话时,我收到了错误。

我怎样才能设置条件来尝试一些事情,当我通过条件时,我可以执行以下操作:

enter image description here

或其他解决方法?

3 个答案:

答案 0 :(得分:1)

根据您提供的信息。

的Javascript

function parseMyDate(dateString) {
    var parts = dateString.slice(0, -1).split(/[T\-:\.]/g);

    parts[1] -= 1;
    return new Date(Date.UTC.apply(undefined, parts));
}

var dateString = '2014-01-21T13:50:20.123Z';

var myDate = parseMyDate(dateString);

console.log(!isNaN(myDate), myDate instanceof Date);

jsFiddle

答案 1 :(得分:1)

虽然其他答案有效但却使事情过于复杂。 不要将日期来回转换为字符串。 而是将其保存为整数(date.getTime()),可将其保存到属性(作为字符串),并将其简单地解析为数字,然后简单地将Date(num)提供给您确切的日期。

答案 2 :(得分:0)

我找到了其他解决方案:将日期对象转换为字符串,然后将其存储在ScriptProperties中:

function stringifyDates(array){
   for(var i = 0; i<array.length; i++){
      var newString = array[i];
      if(newString instanceof Date){
        newString = newString.getDate() + '/' + (newString.getMonth() + 1) + '/' + newString.getFullYear();
        array[i] = newString;
     }
  }
  return array
}