javascript日期对象的问题

时间:2012-06-05 08:15:54

标签: javascript date

我在初始化javascript日期对象时面临一个奇怪的问题,无论我初始化它显示日期为1 JAN 1970 05:30;

这是我尝试初始化的方式

var d=new date(27-02-1989);

警告'd'显示1970年1月1日.....,有时它需要从数据库传递一个日期,但格式为mm / dd / yyyy不是我想要的格式,即dd / mm / yyyy < / p>

这个问题突然爆发,因为几天前一切顺利,但今天打开项目后(2天后)这个问题让我感到恼火

5 个答案:

答案 0 :(得分:2)

我看到你已经接受了答案,但这不是你能做的最好的事情。所有常用浏览器都没有正确解析的格式,至少IE 8中接受的答案将失败。

将字符串转换为日期的唯一安全方法是解析它,例如

var s = '27-02-1989';
var bits = s.split('-');
var date = new Date(bits[2], --bits[1], bits[0]);

答案 1 :(得分:1)

根据here你可以尝试:

new Date()
new Date(milliseconds)
new Date(dateString)
new Date(year, month, day [, hour, minute, second, millisecond ])

因此,对于您的案例使用(编辑:您需要记住月份为零)

var d = new Date(1989,01,27);
请注意 - 使用Date(大写D)

答案 2 :(得分:1)

您正在使用负整数值(27-02-1989 == -1964)进行初始化。 Date对象的构造函数采用列出here的参数。

如果要传递字符串,则需要采用符合RFC2822的格式(请参阅here)。

答案 3 :(得分:1)

// Transform your european date in RFC compliant date (american)
var date = '27-02-1989'.split('-').reverse().join('-');

// And this works
var d = new Date( date );

证明:

Proof

答案 4 :(得分:0)

首先

var d=new date(27-02-1989); 

在javascript中是完全错误的表达式,而且即使我们更正确地重写它:

var d=new Date('27-02-1989');

无法在js中原生解析此日期字符串。

您可以尝试以下解决方案:

  • 将字符串转换为ISO8601:YYYY-mm-dd,这可以由大多数现代broswers解析,或者您可以使用许多js库进行polyfill
  • 用' - '拆分字符串字符串,然后使用Date构造函数new Date(year, month-1, day)
  • 拆分字符串并在setDate, setMonth, setYear对象

    上使用new Date()方法

    请注意,在最后两种方法中,您需要从月份值中扣除1,因为月份是从零开始的(0表示1月,11表示12月)