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

Test if a string has timezone in javascript

本文关键字:时区 是否 字符串 javascript 测试      更新时间:2023-09-26

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

07/08/2012 13:17:32

这是世界协调时时间。

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

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

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

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

有什么想法吗?

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

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

会的。

作为一个快速而肮脏的解决方案,时区似乎是用空格分隔的格式的最后一个"部分"。 因此,您可以计算输入字符串中"部分"的数量,如果未找到,则添加默认时区。 例如:

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)