在JavaScript中显示无效日期

时间:2014-04-24 12:35:06

标签: javascript date datetime

我创建了一个Javascript逻辑,用于从某些值中检索日期和时间。

最初我做了解析DateTime,将其转换为字符串,然后拆分字符串并检索日期。

就像我检索了解析的时间,并且atlast一起加入(新的日期+新的时间)。

我试图将它转换为日期,现在当我提醒它然后它说无效的日期。我想像这种格式一样显示新创建的日期。

var sampDate = new Date(); 警报(sampDate);

我不擅长解释所以iam上传我的代码以便在这里也是。

请看一下JSFiddle。我的工作如下。请详细说明我的错误。任何帮助将非常感谢。

JSFIDDLE:http://jsfiddle.net/5csge/

    var date = 1745488627000;

    var parsedDate = new Date(parseInt(date, 10)).toString();

    var splitDate = parsedDate.split(" ");

    var currentMonth;

    switch (splitDate[1]) {
        case "Jan":
            currentMonth = 1;
            break;
        case "Feb":
            currentMonth = 2;
            break;
        case "Mar":
            currentMonth = 3;
            break;
        case "Apr":
            currentMonth = 4;
            break;
        case "May":
            currentMonth = 5;
            break;
        case "Jun":
            currentMonth = 6;
            break;
        case "Jul":
            currentMonth = 7;
            break;
        case "Aug":
            currentMonth = 8;
            break;
        case "Sep":
            currentMonth = 9;
            break;
        case "Oct":
            currentMonth = 10;
            break;
        case "Nov":
            currentMonth = 11;
            break;
        case "Dec":
            currentMonth = 12;
            break;
    }

    var time = -688627000;

    var parsedTime = new Date(parseInt(time, 10)).toString();

    var splitTime = parsedTime.split(" ");

    var convertedEndDate = new Date(splitDate[2] + "/" + currentMonth + "/" + splitDate[3] + " " + splitTime[4]);

    alert(convertedEndDate);

    var currentDate = new Date();
    alert(currentDate);

3 个答案:

答案 0 :(得分:4)

您的问题在这里:

var convertedEndDate = new Date(splitDate[2] + "/" + currentMonth +
                                   "/" + splitDate[3] + " " + splitTime[4]);

您可以假设24/4/2025 00:42:53可以作为参数传递到Date()对象中。来自MDN

  

<强> dateString

     

表示日期的字符串值。该字符串应采用Date.parse()方法识别的格式(符合IETF的RFC 2822时间戳以及ISO8601的版本)。

这显然不是ISO8601格式(可以从2025-04-24开始),但它似乎也不是RFC282时间戳的格式。事实上,最好不要将月份名称翻译成数字;以下似乎完美地工作,用空格替换/

var convertedEndDate = new Date(splitDate[2] + " " + splitDate[1]
                                 + " " + splitDate[3] + " " + splitTime[4]);

答案 1 :(得分:1)

使用New Date - setFullYear()setHours()

new Date()
setFullYear();
setHours();

DEMO UPDATED

答案 2 :(得分:0)

使用日期对象并设置方法。     D =新日期();     D.setDay(12);     D.setMonth(2); 当你这样做时,日期将在脚本执行后间接继续