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

时间:2018-08-01 04:31:59

标签: 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] 

am将该值分配给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;       
}

现在,对于某些值它可以工作,而对于某些值则不起作用,并且给出无效的日期

运行JScr​​ipt后的示例输出

输入值20-02-2018 在valueInvalid日期上处理

2 个答案:

答案 0 :(得分:0)

简单地说:

const start = myData.get(1);  

const start = myData[1];

答案 1 :(得分:0)

问题是调用时输入的字符串格式不正确

var tday = new Date(myday);

请查看此page。在那里,您可以看到字符串必须具有哪种格式才能接收有效的日期对象。在您的情况下,这意味着使用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;