不能在firefox上使用date.parse。它适用于Chrome

时间:2013-04-07 13:34:26

标签: javascript jquery firefox

我对jQuery没有经验,所以我陷入了一个问题。 问题是在Chrome中我的代码运行正常,但在Firefox中则没有。 似乎date.parse命令不起作用,因为“tsv”数据没问题,但“日期”数据没有。

代码如下。如果有人可以帮助我,请告诉我......

jQuery.get('data.php', null, function(tsv) {
                var lines = [];
                traffic = [];
                try {
                    // split the data return into lines and parse them
                    tsv = tsv.split(/\n/g);
                    jQuery.each(tsv, function(i, line) {
                        line = line.split(/\t/);
                    var date = Date.parse(line[0] +' UTC');
                        traffic.push([
                            date,
                            parseFloat(line[1].replace(',', ' '), 10)
                        ]);
                    }) ;
                } catch (e) {  }
                options.series[0].data = traffic;
                chart = new Highcharts.Chart(options);

    // alert(tsv);
     // alert(traffic);
   //    alert(date);
            }) ;

3 个答案:

答案 0 :(得分:5)

Firefox不支持以2013-04-06 22:46:08格式解析日期。

您可以使用date.js库来获取对此格式的支持。

如果您不想使用date.js,则下面的函数会将日期从yyyy-mm-dd HH:mm:ss格式解析为UTC。

function parseDateUTC(input) {
    var reg = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/;
    var parts = reg.exec(input);
    return parts ? (new Date(Date.UTC(parts[1], parts[2] -1, parts[3], parts[4], parts[5],parts[6]))) : null
}

然后您只需将代码更改为

var date = parseDateUTC(line[0]);

答案 1 :(得分:1)

date.js已不再更新,事实上,该网站已关闭。我已经读过,最好的替代品是MomentJS。根据{{​​3}}

moment().format('1995-02-23 12:14:16', 'YYYY-MM-DD hh:mm:ss');

答案 2 :(得分:0)

我有类似的问题。我最终包括date.js(包含这个作为脚本,它将覆盖date.parse()函数)。

然而,为了使它在HighStocks中工作,我需要将结果转换为毫秒。如果dateString包含date.js可以转换的格式之一的日期,那么

dateString= Date.parse(dateString);

仅适用于Chrome,但

dateString= Date.parse(dateString).getTime();

将浏览器提供的任何结果转换为毫秒,到目前为止它对我有用......