繁体   English   中英

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

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

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

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

我是正则表达式的新手,其执行方式如下:

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

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

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

> 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。 夏时制即使在给定的语言环境下也可以防止该值保持恒定

是的,您可以使用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> 

如果使用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"]

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM