在javascript中将毫秒字符串转换为日期
有很多关于将毫秒转换为日期格式的问题得到了回答,但没有一个能够解决我的问题 我的javascript代码中有一个字符串(而不是时间)。其格式如下所示 13805496000+1000 当我尝试使用下面的代码解析它时,它会给我“无效日期”错误 我的主要目标是将此字符串转换为dd/mm/yyyy格式。因此,我们考虑将其转换为日期,并应用“getMonth”等方法在javascript中将毫秒字符串转换为日期,javascript,jquery,date,datetime,Javascript,Jquery,Date,Datetime,有很多关于将毫秒转换为日期格式的问题得到了回答,但没有一个能够解决我的问题 我的javascript代码中有一个字符串(而不是时间)。其格式如下所示 13805496000+1000 当我尝试使用下面的代码解析它时,它会给我“无效日期”错误 我的主要目标是将此字符串转换为dd/mm/yyyy格式。因此,我们考虑将其转换为日期,并应用“getMonth”等方法 var modDate=“13805496000+1000”//注意,该值位于“”中,因此为字符串 var d=新日期(modDate)
var modDate=“13805496000+1000”//注意,该值位于“”中,因此为字符串
var d=新日期(modDate)//此处的日期错误无效
document.getElementById(“demo”).innerHTML=d;
下面的工作很好。但这不是我得到的格式
<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>
var modDate=13805496000+1000//注意:该值不再在“”中
var d=新日期(modDate)//这里没问题
document.getElementById(“demo”).innerHTML=d;
请帮忙。
提前谢谢
干杯。编辑:-
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>
var modDate=eval(“138054960000+1000”)//注意,该值位于“”中,因此为字符串
var d=新日期(modDate)//此处的日期错误无效
document.getElementById(“demo”).innerHTML=d;
编辑:-
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>
var modDate=eval(“138054960000+1000”)//注意,该值位于“”中,因此为字符串
var d=新日期(modDate)//此处的日期错误无效
document.getElementById(“demo”).innerHTML=d;
使用parseInt
获取字符串的数值(比eval
更安全,但前提相同):
使用
parseInt
获取字符串的数值(比eval
更安全,但前提相同):
不使用eval的其他进近:
var modDate = "1380549600000+1000";
var d = new Date(modDate.split("+")
.map(parseFloat)
.reduce(function(a,b){return a + b;}));
不使用eval的其他进近:
var modDate = "1380549600000+1000";
var d = new Date(modDate.split("+")
.map(parseFloat)
.reduce(function(a,b){return a + b;}));
为了让我的答案发挥作用,我不得不使用一些混乱的答案。 我的日期值作为字符串发送到我的网页,如:“/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) {}
为了让我的答案发挥作用,我不得不使用一些混乱的答案。 我的日期值作为字符串发送到我的网页,如:“/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) {}
通过
+1000
你想说什么?如果你删除了完全无效的+1000
并将其解析为一个数字,它应该可以使用fineUse eval()进行计算,然后使用日期逻辑,因为如果你试图解析它,+将被视为非法字符。这种格式是什么@leopik如果是时区,则为+1s时区0\u o您必须检查字符串中是否有非数字字符,如果是,请删除此非数字字符后的以下字符(数字),获取要用日期格式化的结果。+1000
你想说什么?如果你删除了完全无效的+1000
并将其作为一个数字进行解析,它应该可以使用fineUse eval()进行计算,然后使用日期逻辑,因为如果你试图解析它,+将被视为非法字符。这种格式是什么@leopik如果它是一个时区,它是一个+1s时区0\u oSo您必须检查字符串中是否有非数字字符,如果是,请删除此非数字字符后的以下字符(数字),以日期格式获取结果。这将以javascript形式评估字符串并返回结果,这是非常准确的,math.safer在+上拆分,然后加上normallyTrue,这是一个假设,但给出的格式很可能是一个。我想OP还没有发现时区加法之间的差异。但是,计算“来自某处”的字符串似乎是一个可怕的想法。eval
在JS中是一个糟糕的做法,它将字符串作为javascript进行计算并返回结果,这实际上就是数学。更安全的做法是在+上拆分,然后添加正常的true,这是一个假设,但考虑到格式,这很可能是一个假设。我可以想象OP还没有发现时区添加之间的差异。但仍然,评估字符串“来自某处”这似乎是一个可怕的想法。eval
在JS中是一个糟糕的做法。在我看来,+
听起来像是我们试图安全合理地解释字符串的任何可能值,这是不现实的,但它忽略了潜在的相关信息。在+
之后,哪些相关信息不需要更改原始问题的参数?我承认,这个问题非常不清楚。只是强调这将产生与OP的“工作”不同的输出例如,您丢失了一个radixoptional,这会导致Octalst出现某些问题。在+
听起来像是我们试图安全合理地解释字符串的任何可能值之后,这会忽略潜在的相关信息,这是不现实的。在+
之后,哪些相关信息不需要更改原始问题的参数?我承认,这个问题非常不清楚。只是强调这将产生与OP的“工作”示例不同的输出,并且您缺少一个radixoptional,这会导致八进制的某些问题