有很多关于毫秒到日期格式转换的问题,但是没有一个能解决我的问题。
我有一个字符串(而不是时间)来我的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) {}