我从服务器收到一个日期时间作为字符串,可能如下所示:
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 或任何其他时区符号。
有任何想法吗?
我从服务器收到一个日期时间作为字符串,可能如下所示:
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 或任何其他时区符号。
有任何想法吗?
如果您的时区始终采用 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)