使用正则表达式,Javascript中是否有任何其他方法可以从具有时区的字符串中提取日期

时间:2016-11-11 06:32:58

标签: javascript regex string datetime

我使用正则表达式从给定字符串中提取日期和时间信息。

  

2006-08-15T00:00:00+05:30

我对正则表达式不熟悉,我这样做的方式如下:

(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})

我知道可能有更好的方法来做到这一点。所以,如果有人对此话题有任何了解,请分享和解释。 P.S:我也想提取时区信息。

4 个答案:

答案 0 :(得分:3)

如果您需要非正则表达式解决方案,可以使用:

> new Date(Date.parse("2005-07-08T11:22:33+0000"))
Fri Jul 08 2005 13:22:33 GMT+0200 (CEST)
> new Date(Date.parse("2005-07-08T11:22:33+0000")).toUTCString()
"Fri, 08 Jul 2005 11:22:33 GMT"

要获得时区,您可以使用getTimezoneOffset()功能

var my_date = new Date(Date.parse("2005-07-08T11:22:33+0000"));
var timezone_offset = my_date.getTimezoneOffset();
  

时区偏移是UTC与本地时间之间的差异(以分钟为单位)。请注意,这意味着如果本地时区落后于UTC,则偏移量为正,如果前置,则偏移量为负。例如,如果您的时区是UTC + 10(澳大利亚东部标准时间),则将返回-600。夏令时可以防止该值即使对于给定的区域设置也是常量

答案 1 :(得分:0)

是的,你可以使用split方法。



<!DOCTYPE html>
<html>
<body>

<p>Click the button to display the array values after the split.</p>

<button onclick="myFunction()">Try it</button>


<script>
function myFunction() {
    var str = "2006-08-15T00:00:00+05:30";
    var res = str.split("T");
   console.log("date:" +res[0]);
  console.log("time:" +res[1]);
}
</script>

</body>
</html>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果您使用了Date()功能,那么您可以创建Date Object以获取所需的所有数据{/ 1}}。

示例

regular expression

以下是全部Date Object Methods

答案 3 :(得分:0)

您可以拆分字符串,然后获得一个数组,其中包含以下信息:

 date.split(/[-\+:T]/g);
 //  ["2006", "08", "15", "00", "00", "00", "05", "30"]

此外,在使用时区之前,您应该检查字符串是否包含+或 -