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
Javascript中iso8601时间间隔的解析_Javascript_Datetime - Fatal编程技术网

Javascript中iso8601时间间隔的解析

Javascript中iso8601时间间隔的解析,javascript,datetime,Javascript,Datetime,我正在构建一个前端组件,允许用户根据ISO 8601规范选择日期\时间范围,并可以选择使用时间段 组件将需要绑定到用户已经设置的任何现有值,因此我正在研究如何解析字符串的时间间隔段,例如: “2007-03-01T13:00Z/P1Y2M10DT2H30M” 我不确定如何提取时间间隔片段的数字部分,这样我就可以得到某种对象\数组,由字母键入,这样我就可以轻松确定年数(Y)、月数(M)等 我可以试试我自己的正则表达式,但我怀疑已经有人这么做了 我想给用户提供一系列数字输入,并为用户之前设置的任何现

我正在构建一个前端组件,允许用户根据ISO 8601规范选择日期\时间范围,并可以选择使用时间段

组件将需要绑定到用户已经设置的任何现有值,因此我正在研究如何解析字符串的时间间隔段,例如:

“2007-03-01T13:00Z/P1Y2M10DT2H30M”

我不确定如何提取时间间隔片段的数字部分,这样我就可以得到某种对象\数组,由字母键入,这样我就可以轻松确定年数(Y)、月数(M)等

我可以试试我自己的正则表达式,但我怀疑已经有人这么做了

我想给用户提供一系列数字输入,并为用户之前设置的任何现有周期值设置这些数字

有人能在这里提出一些建议吗

我希望这是有意义的

谢谢

试试这个:

var dateStr = '2007-03-01T13:00Z/P1Y2M10DT2H30M';
var date = new Date(Date.parse(dateStr.split('/')[0]));
试试这个:

var dateStr = '2007-03-01T13:00Z/P1Y2M10DT2H30M';
var date = new Date(Date.parse(dateStr.split('/')[0]));

和往常一样,现在,现在,伙计们!!谢谢你们的回复,我现在确实看了,但不确定它是否支持时间周期。所以我喜欢这种方法的外观,会尝试一下!哦,请删除我的上一条注释并使用以下内容:
“2007-03-01T13:00Z/P1Y2M10DT2H30M”.split(“/”).pop().split(/\D+/).map(Number).slice(1,-1)
提供一个数字[Y,M,D,H,M]数组。(我拿出filter(),如果某个值为零,它将移动数组)dandavis-感谢这个建议,这确实给了我一个数组,但我无法知道哪个值代表哪个时间段。有没有办法得到一个键控对象,例如{P:1,Y:2,…}?一如既往,现在,伙计们!!谢谢你们的回复,我现在确实看了,但不确定它是否支持时间周期。所以我喜欢这种方法的外观,会尝试一下!哦,请删除我的上一条注释并使用以下内容:
“2007-03-01T13:00Z/P1Y2M10DT2H30M”.split(“/”).pop().split(/\D+/).map(Number).slice(1,-1)
提供一个数字[Y,M,D,H,M]数组。(我拿出filter(),如果某个值为零,它将移动数组)dandavis-感谢这个建议,这确实给了我一个数组,但我无法知道哪个值代表哪个时间段。有没有一种方法可以获取键控对象,例如{P:1,Y:2,…}?
=newdate(dateStr.split('/')[0])
足够了,但请仔细阅读问题…
=newdate(dateStr.split('/')[0])足够了,但请仔细阅读问题。。。