Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中将毫秒字符串转换为日期_Javascript_Jquery_Date_Datetime - Fatal编程技术网

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

在javascript中将毫秒字符串转换为日期,javascript,jquery,date,datetime,Javascript,Jquery,Date,Datetime,有很多关于将毫秒转换为日期格式的问题得到了回答,但没有一个能够解决我的问题 我的javascript代码中有一个字符串(而不是时间)。其格式如下所示 13805496000+1000 当我尝试使用下面的代码解析它时,它会给我“无效日期”错误 我的主要目标是将此字符串转换为dd/mm/yyyy格式。因此,我们考虑将其转换为日期,并应用“getMonth”等方法 var modDate=“13805496000+1000”//注意,该值位于“”中,因此为字符串 var d=新日期(modDate)

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

我的javascript代码中有一个字符串(而不是时间)。其格式如下所示

13805496000+1000

当我尝试使用下面的代码解析它时,它会给我“无效日期”错误

我的主要目标是将此字符串转换为dd/mm/yyyy格式。因此,我们考虑将其转换为日期,并应用“getMonth”等方法


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,这会导致八进制的某些问题