我有这个功能:
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(" ");
}
}
哪个不起作用,因为日期存储为字符串,如此日志中所示:
数据存储在Google电子表格中。然后,stringfied并存储在ScriptProperties中(只接受字符串),之后,恢复为字符串数组。
我尝试过这样的事情:if(new Date (newString) instanceof Date)
但是当字符串无法与日期格式对话时,我收到了错误。
我怎样才能设置条件来尝试一些事情,当我通过条件时,我可以执行以下操作:
或其他解决方法?
答案 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);
上
答案 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
}