JavaScript日期解析产生错误的日​​期

时间:2010-10-07 23:06:49

标签: javascript datetime date

我有这个脚本:

var a="Thu Oct 07 16:50:0 CEST 2010";
var b=a.split("CEST");
var d = new Date(b[0]);
alert(d);​​​​​​​​​​​

但它不符合我的要求。实际上,日期结果与字符串中的原始结果不同。

输入是截至2007年10月18日16:50:0 CEST 2010,但结果不同于星期六07 07 2000 16:50:00 GMT + 0200(CEST)。 有什么问题?

3 个答案:

答案 0 :(得分:4)

你只是失去了关于这一年的信息。 split将字符串拆分为“CEST”中的数组,您只需解析第一个元素(“CEST”左侧字符串的一部分)。所以你要么需要再次添加字符串的正确部分,要么使用更合适的方法,如replace

var a="Thu Oct 07 16:50:0 CEST 2010";
var b=a.split("CEST");
var d = new Date(b[0]+b[1]);
alert(d);​​​​​​​​​​​

var a="Thu Oct 07 16:50:0 CEST 2010";
var b= a.replace('CEST','');
var d = new Date(b);
alert(d);​​​​​​​​​​​

答案 1 :(得分:1)

据我所知

  1. :0代替:00无效
  2. 年份应遵循日期,例如 Thu Oct 07 2010 16:50:00不在最后
  3. 提供要解析的时区信息 必须采用GMT(+|-)nnnn格式 对于CEST,Thu Oct 07 2010 16:50:00 GMT+0200
  4. 虽然它似乎并不关心:0

    你在哪里找到var a的字符串?

答案 2 :(得分:1)

重新排列字符串,将'CEST'替换为偏移时间,并解析其中的日期:

var str="Thu Oct 07 16:50:00 CEST 2010",

pattern=str.replace('CEST','GMT-0200').split(' ');
pattern.splice(3,0,pattern.pop());
str=pattern[0]+' '+pattern[1]+' '+pattern[2]+', '+pattern.slice(3).join(' ');

D= new Date(Date.parse(str));

alert('\nLocal: '+D+'\nGMT: '+D.toUTCString())

//重新排列的字符串:2010年10月7日星期四16:50:00 GMT-02:00

  • Firefox:

    当地时间:2010年10月7日星期四14:50:00 GMT-0400(东部夏令时)

    格林尼治标准时间:2010年10月7日星期四18:50:00 GMT

    IE:

    当地时间:2010年10月7日星期四14:50:00

    GMT:2010年10月7日星期四18:50:00 UTC

    Safari浏览器:

    当地时间:2010年10月7日星期四14:50:00 GMT-0400(东部夏令时)

    格林尼治标准时间:2010年10月7日星期四18:50:00 GMT

    歌剧:

    当地时间:2010年10月7日星期四14:50:00 GMT-0400

    格林尼治标准时间:2010年10月7日星期四18:50:00 GMT