Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 在JS中取消日期格式化-转换为毫秒_Javascript_Date - Fatal编程技术网

Javascript 在JS中取消日期格式化-转换为毫秒

Javascript 在JS中取消日期格式化-转换为毫秒,javascript,date,Javascript,Date,我有一个日期字符串要转换为毫秒。虽然我不知道这是什么格式 var time = "20150605-16:34:53.506"; 我不确定如何将这个时间转换为毫秒 我试过了 new Date(time); 但它只是给了我一个错误,这不是一个有效的时间 如果可能的话,我希望在没有库的情况下实现这一点。将字符串更改为JavaScript可以识别的格式,它接受RFC2822/IETF日期语法。然后使用: var time = Date.parse(yourFormattedTimeString)

我有一个日期字符串要转换为毫秒。虽然我不知道这是什么格式

var time = "20150605-16:34:53.506";
我不确定如何将这个时间转换为毫秒

我试过了

new Date(time); 
但它只是给了我一个错误,这不是一个有效的时间


如果可能的话,我希望在没有库的情况下实现这一点。

将字符串更改为JavaScript可以识别的格式,它接受RFC2822/IETF日期语法。然后使用:

var time = Date.parse(yourFormattedTimeString);
然后:


将字符串更改为JavaScript能够识别并接受RFC2822/IETF日期语法的格式。然后使用:

var time = Date.parse(yourFormattedTimeString);
然后:


您试图解析为日期的字符串不是javascript识别的格式,下面是它可以识别的格式,以及如何获得毫秒值:

var d = new Date("June 05, 2015 16:34:53:506");
var n = d.getMilliseconds();`

您试图解析为日期的字符串不是javascript识别的格式,下面是它可以识别的格式,以及如何获得毫秒值:

var d = new Date("June 05, 2015 16:34:53:506");
var n = d.getMilliseconds();`

您可以通过几个简单的步骤将该字符串转换为有效的日期字符串,目标是从以下位置获取:

20150605-16:34:53.506
致:

变量时间='20150605-16:34:53.506'; 时间=时间。替换“-”和“T”; 时间=time.slice0,4+'-'+time.slice4,6+'-'+time.slice6; var毫秒=new Datetime.getTime;
console.logms;//1433540093506您可以通过几个简单的步骤将该字符串转换为有效的日期字符串,目标是:

20150605-16:34:53.506
致:

变量时间='20150605-16:34:53.506'; 时间=时间。替换“-”和“T”; 时间=time.slice0,4+'-'+time.slice4,6+'-'+time.slice6; var毫秒=new Datetime.getTime;
console.logms;//1433540093506您可以这样做: 变量时间=20150605-16:34:53.506; var date=new Datetime.replace/\d{4}\d{2}\d{2}-.*/,“$1-$2-$3T$4Z”; var ms=date.getTime;
console.logms 您可以这样做: 变量时间=20150605-16:34:53.506; var date=new Datetime.replace/\d{4}\d{2}\d{2}-.*/,“$1-$2-$3T$4Z”; var ms=date.getTime;
console.logms 以下是暴力法:

var time = "20150605-16:34:53.506";
var year = parseInt(time.substr(0, 4), 10);
var month = parseInt(time.substr(4, 2), 10) - 1;
var day = parseInt(time.substr(6, 2), 10);
var hour = parseInt(time.substr(9, 2), 10);
var minute = parseInt(time.substr(12, 2), 10);
var second = parseInt(time.substr(15, 2), 10);
var mille = parseInt(time.substr(18, 3), 10);
var date = new Date(year, month, day, hour, minute, second, mille);
console.log(date);
> Fri Jun 05 2015 16:34:53 GMT-0700 (PDT)
有关更多详细信息,请参阅。请注意,月份是奇数-它是基于零的,不同于年和日,因此解析月份上的-1:

表示月份的整数值,1月从0开始,12月从11开始


以下是暴力法:

var time = "20150605-16:34:53.506";
var year = parseInt(time.substr(0, 4), 10);
var month = parseInt(time.substr(4, 2), 10) - 1;
var day = parseInt(time.substr(6, 2), 10);
var hour = parseInt(time.substr(9, 2), 10);
var minute = parseInt(time.substr(12, 2), 10);
var second = parseInt(time.substr(15, 2), 10);
var mille = parseInt(time.substr(18, 3), 10);
var date = new Date(year, month, day, hour, minute, second, mille);
console.log(date);
> Fri Jun 05 2015 16:34:53 GMT-0700 (PDT)
有关更多详细信息,请参阅。请注意,月份是奇数-它是基于零的,不同于年和日,因此解析月份上的-1:

表示月份的整数值,1月从0开始,12月从11开始

根据日期是某种ISO 8601格式,它只是说标准分隔符是一个“T”

如果不立即接受您的格式,您必须进行2项更改:将破折号“-”更改为“t”,并分隔日期

str = "20150605-16:34:53.506";
formattedStr = str.slice(0,4) + '-' + str.slice(5,7) + '-' + str.slice(8).replace('-', 'T');
Date.parse(formattedStr);
根据日期是某种ISO 8601格式,它只是说标准分隔符是一个“T”

如果不立即接受您的格式,您必须进行2项更改:将破折号“-”更改为“t”,并分隔日期

str = "20150605-16:34:53.506";
formattedStr = str.slice(0,4) + '-' + str.slice(5,7) + '-' + str.slice(8).replace('-', 'T');
Date.parse(formattedStr);

这不是标准格式,不。所以首先,解码格式。在我看来是:yyyymmdd hh:mm:ss.sss第二,自己解析格式。第三,用这些数据创建一个新的数据库。瞧,这种格式看起来像一个,但在年、月和日之间没有破折号。您可以手动放置它们,并在末尾添加Z符号,然后进入UTC+0时区。您可以为此编写正则表达式,并按照建议对其进行解析。节省了几行,但可能会让人看不懂。这不是标准格式,不是。所以首先,解码格式。在我看来是:yyyymmdd hh:mm:ss.sss第二,自己解析格式。第三,用这些数据创建一个新的数据库。瞧,这种格式看起来像一个,但在年、月和日之间没有破折号。您可以手动放置它们,并在末尾添加Z符号,然后进入UTC+0时区。您可以为此编写正则表达式,并按照建议对其进行解析。保存了几行,但可能会让人困惑。OP posted的格式不是标准格式,因此无法与Date.parse一起使用。OP posted的格式不是标准格式,因此无法与Date.parse一起使用。谢谢船长,但这并不是对他的问题的回答:OP似乎不是从源获取此日期字符串,他们只是将其硬编码在javascript中,因此提供一个复杂的解决方案,将格式错误的日期字符串转换为格式正确的日期字符串可能会有点过火和混乱。感谢船长,但这并不是对他的问题的回答:OP似乎不是从源代码获取此日期字符串,他们只是将其硬编码到javascript中,因此提供一个复杂的解决方案,将格式错误的日期字符串转换为格式正确的日期字符串可能会有点过火和混乱。谢谢,但我想你忘记了最后三位数字,我将其解析为秒-这是53.506秒,对吗?默认情况下,日期的toString不会显示千秒,这就是为什么它不会出现在那里。但是您可以使用getTime来获取时间
在那里盖章并观察它们。但我认为你是对的——千秒没有成功。我会解决它的。@SoluableNonagon更新了。谢谢,但我想你忘了最后三个数字,我把它们解析成秒-是53.506秒,对吗?默认情况下,日期的toString不会显示千秒,这就是为什么它不会出现在那里的原因。但是你可以使用getTime来获取时间戳并在那里观察它们。但是我认为你是对的——千秒没有成功。我会修好的。@SoluableNonagon更新。