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



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

我有一个字符串(而不是时间)来我的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>

请帮助。提前谢谢。

欢呼。

edit:-

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>

不使用eval的其他方法:

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

使用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");
}

我不得不使用这里的答案的一些大杂烩来使我的工作。我的日期值作为字符串被发送到我的网页,像这样:"/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) {}

相关内容

  • 没有找到相关文章

最新更新