【问题标题】:BST date string to javascript dateBST 日期字符串到 javascript 日期
【发布时间】:2015-04-29 16:00:58
【问题描述】:

如何将 BST 日期字符串转换为 Javascript 日期对象?

以下代码给了我 BST 错误,但适用于其他时区

var data='Tue Apr 28 16:15:22 BST 2015';
var date = new Date(data);
console.log(date)

输出

Invalid Date

var data='Tue Apr 28 16:15:22 BST 2015';
var date = new Date(data);
console.log(date)

var data2='Fri Mar 27 11:53:50 GMT 2015'
var date2 = new Date(data2);
console.log(date2)

【问题讨论】:

  • BST 我假设您的意思是 GMT+1 ?另外,为什么你的时间在你的一天和一年之间?
  • 看起来您依赖于浏览器特定的日期字符串解析 - 我前一阵子遇到了类似的问题。如果没有其他人超过我,我会在我开始工作时发布。
  • 相关:thisthis。还可以查看 this 图表,该图表显示了 Javascript 从跨浏览器的字符串兼容性解析日期的问题。一般来说,我建议不要使用默认的 Date(String) 构造函数,而是使用库或其他构造函数。

标签: javascript date timezone


【解决方案1】:
  1. 不要依赖日期来知道时区名称
  2. 不要将日期时间混为一谈;年份应该在时间之前,时区应该是最后一件事

把这些放在一起

var timezone_map = {
    'BST': 'GMT+0100'
};

function re_order(str) {
    var re = /^(\w+) (\w+) (\d\d) (\d\d:\d\d:\d\d) (\w+) (\d\d\d\d)$/;
    return str.replace(re, function ($0, day, month, date, time, zone, year) {
        return day + ' ' + month + ' ' + date + ' ' + year + ' ' + time + ' ' + (timezone_map[zone] || zone);
    });
}

new Date(re_order('Tue Apr 28 16:15:22 BST 2015'));
// Tue Apr 28 2015 16:15:22 GMT+0100 (GMT Daylight Time)

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2016-10-07
    相关资源
    最近更新 更多