使用正则表达式,Javascript中还有其他方法从具有时区的字符串中提取日期吗?

Using regular expression, is there any other way in Javascript to extract date from string having time zone

本文关键字:字符串 时区 提取 取日期 方法 正则表达式 Javascript 其他      更新时间:2023-09-26

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

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

我是正则表达式的新手,我的做法如下:

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

我知道可能有更好的方法来做这件事。所以,如果有人对这个话题有任何了解,请分享和解释。注:我还想提取时区信息。

如果你想要一个非正则表达式的解决方案,你可以使用:

> 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,则偏移量为负。例如,如果您的时区是UTC+10(澳大利亚东部标准时间),将返回-600。日光节约时间防止此值成为常量,即使对于给定的区域

是的,你可以使用分割方法。

<!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>

如果您使用Date()函数,那么您可以创建Date Object来获得您想要的没有regular expression的所有数据。

var Obj   = new Date();
var month = Obj.getMonth();
var date  = Obj.getDate();
var year  = Obj.getFullYear();
var hour  = Obj.getUTCHours();
var minutes = Obj.getUTCMinutes();

这里是所有的Date对象方法

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

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

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