有很多关于将毫秒转换为日期格式的问题,但没有一个能够解决我的问题。
我的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>
请帮忙。 提前谢谢。
干杯。
答案 0 :(得分:3)
修改: -
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) {}