从数组列表到JavaScript变量的日期分配



我有一个数组列表myData,它包含类似的值

[20-01-2018,10-01-2018, 20-02-2018, TASk2, 11-02-2018, 21-03-2018, TASK3, 15-03-2018, 19-04-2018] 

我将该值分配给一个javascript变量

var start = new Date(<%=myData.get(1)%>);   

alert(start)输出

Thu Jan 01 1970 05:29:57 GMT+0530 (India Standard Time)

但当我打印myData.get(1)时,会给出

10-01-2018

我希望起始变量单独保存日期值10-01-2018有人能告诉我哪里错了吗。

我做了以下修改。添加了一个java脚本函数来格式化日期按照我的要求并将其退回。

步骤。1迭代数组列表2.将值作为参数分配给java脚本函数,以将其格式化为

start=formatMyDate('<%=pertData.get(loopcount+1(%>'(
end=formatMyDate('<%=pertData.get(loopcount+2('(;

function formatMyDate(myday)
{         
alert("entered value"+myday);
var tday = new Date(myday);
alert("processing on value"+tday);  
alert(typeof tday);
var dd = tday.getDate();
var mm = tday.getMonth()+1; //January is 0!
var yyyy = tday.getFullYear();
if(dd<10){
dd='0'+dd;
} 
if(mm<10){
mm='0'+mm;
} 
var ret = dd+'/'+mm+'/'+yyyy;
alert("left value"+ret); 
return ret;       
}

现在,对于某些值,它有效,而对于某些值则无效,并给出无效日期

运行JScript 后的示例输出

输入值2018年2月20日处理value无效日期

简单地说:

const start = myData.get(1);  

const start = myData[1];

问题是在调用时,您不能满足所交字符串的正确格式

var tday = new Date(myday);

请看一下这一页。在那里,您可以看到您的字符串必须具有何种格式才能接收有效的日期对象。这意味着在您的情况下,使用new Date()推动字符串通过这个转换过程是没有用的。最好直接获取年份、月份和日期:

let start = myData[1];
const dd = start.substring(0,2);
const mm = start.substring(3,5);
const yyyy = start.substring(6,10);
const ret = dd+'/'+mm+'/'+yyyy;
alert("left value: " + ret);
return ret;

最新更新