测试字符串是否在javascript中有时区

时间:2012-08-07 15:23:28

标签: javascript

我从服务器收到一个日期时间作为字符串,可能如下所示:

07/08/2012 13:17:32

这是UTC时间。

或者它可能有格式的时区:

07/08/2012 13:17:32 UTC+01:00

我需要一种通用的方法将其解析为Date对象以供显示。如果我执行var d = new Date(str),则它假设的第一个示例是本地时间。

编辑: 它可能并不总是字符串中的'UTC',我认为它可能是GMT,或Z,或任何其他时区指示符。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果您的时区始终采用UTC + nn格式,并且正确解析了具有显式UTC TZ的字符串,正如我从您的问题中假设的那样,那么简单

if (date_string.search(/a-z/i) == -1) {
 date_string += 'UTC+00:00'
}

会做的。

答案 1 :(得分:0)

作为一种快速而肮脏的解决方案,看起来时区是由空格分隔的格式的最后“部分”。因此,您可以计算输入字符串中“部分”的数量,如果没有找到则添加默认时区。例如:

function parseDateDefaultUTC(str) {
  var parts = str.split(/\s+/);
  return new Date((parts.length===3) ? str : str + ' UTC');
}
var d;
d = parseDateDefaultUTC("07/08/2012 13:17:32");
d; // => Sun Jul 08 2012 07:17:32 GMT-0600 (MDT)
d = parseDateDefaultUTC("07/08/2012 13:17:32 UTC+01:00");
d; // => Sun Jul 08 2012 06:17:32 GMT-0600 (MDT)