在javascript中将毫秒字符串转换为日期

时间:2015-06-09 12:30:42

标签: javascript jquery date datetime

有很多关于将毫秒转换为日期格式的问题,但没有一个能够解决我的问题。

我的javascript代码中有一个字符串(而非时间)。它的格式如下

  

1380549600000 + 1000

当我尝试使用以下代码解析它时,它会给我"无效的日期"错误。

我的主要目标是将此字符串转换为dd / mm / yyyy格式。所以正考虑将其转换为日期并应用" getMonth"等方法

<script>
    var modDate = "1380549600000+1000"; //Note the value is in "" hence a string
    var d = new Date(modDate); //Invalid date error here
    document.getElementById("demo").innerHTML = d;
</script>

以下工作正常。但这不是我得到的格式。

<script>
    var modDate = 1380549600000+1000; //Note the value is no longer in ""
    var d = new Date(modDate); //No problems here
    document.getElementById("demo").innerHTML = d;
</script>

请帮忙。 提前谢谢。

干杯。

4 个答案:

答案 0 :(得分:3)

修改: -

eval不是最好的方法,使用eval是不安全的,所以请改用: -

var modDate = "1380549600000+1000"
var temp = modDate.split("+");
modDate = parseInt(temp[0]) + parseInt(temp[1]);

我不确定你是否需要增加1000,如果你不这样做,可以在一行中完成: -

modDate = parseInt(modDate.split("+")[0])

旧方法: -

<script>
var modDate = eval("1380549600000+1000"); //Note the value is in "" hence a string
var d = new Date(modDate); //Invalid date error here
document.getElementById("demo").innerHTML = d;
</script>

答案 1 :(得分:1)

使用parseInt获取字符串的数值(比eval更安全,但前提相同):

modDate = (isNaN(modDate)) ? parseInt(modDate, 10) : modDate;

if !isNaN(modDate) {
    var d = new Date(modDate);
    document.getElementById("demo").innerHTML = d;
} else {
    console.log("Value in modDate not a number");
}

答案 2 :(得分:1)

使用eval的其他方法:

var modDate = "1380549600000+1000";
var d = new Date(modDate.split("+")
    .map(parseFloat)
    .reduce(function(a,b){return a + b;}));

答案 3 :(得分:0)

为了使我的工作正常,我不得不在此处使用一些答案的混搭。 我的日期值以字符串的形式发送到我的网页,例如:“ / Date(978278400000-0500)/”

所以我这样解析它,以使其显示为有效日期:

// sDateString = "/Date(978278400000-0500)/";
 var modDate = sDateString.replace(/[\/Date\(\)]/g, "");
 return new Date(parseInt(modDate, 10));
//returns: Sun Dec 31 2000 11:00:00 GMT-0500 (Eastern Standard Time) {}