Javascript getFullYear,getMonth,getDate无效

时间:2015-04-22 06:36:51

标签: javascript

对不起,我可能因为这个而受到抨击但作为一个新手,我想让这项工作在日期。我有这段代码:

var date = new Date('Apr 21, 2015');

当我使用此代码提醒时:

     
    var date = new Date('Apr 21, 2015');
    alert(date.getFullYear());
    alert(date.getMonth());
    alert(date.getDate ());

它显示NaN。有人可以建议我怎么做吗?

5 个答案:

答案 0 :(得分:2)

如果您将以下内容插入jsfiddle,则可以正常使用2015321(至少在FF和IE下):

var date = new Date('Apr 21, 2015');
alert(date.getFullYear());
alert(date.getMonth());
alert(date.getDate ());

所以你的问题可能在其他地方。你最好的选择是构建一个完整的(但尽可能短的)展示问题的样本,然后告诉我们。

如果这个简单的代码 导致环境中的问题(使用最少的其他代码),那么它可能不支持该构造函数的格式。 ECMAScript指定,对于参数是字符串的单参数构造函数,它就像在该字符串上调用Date.parse()并将对象的值设置为等效的时间值。

但是,它只需要 来处理简化的ISO8601格式:

YYYY-MM-DDTHH:mm:ss.sssZ

不是更自由的格式,例如April 21, 2015

如果构造函数有两到七个参数,那么它的形式为:

new Date (year,month[,date[,hours[,minutes[,seconds[,ms]]]]])

单独给出各个字段。

因此,在给定实施的标准下,没有要求接受您所提供的内容。一个好的测试是使用:

var date = new Date(2015,3,21);

并查看是否可以修复它。

这也为jsfiddle提供了与之前相同的结果,也可以解决您特定环境中的问题。

如果您需要能够解析这些日期格式,并且您不希望将自己限制在允许这些日期格式的环境中,则可能需要求助于第三方库。

答案 1 :(得分:0)

日期功能如下:

new Date(year, month, day, hours, minutes, seconds, milliseconds)

所以这对你有用:

var date = new Date(2015, 3, 21);
alert(date.getFullYear());
alert(date.getMonth());
alert(date.getDate ());

答案 2 :(得分:0)

尝试这个。

var today = new Date("Apr 21, 2015");
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

if(dd<10) {
    dd='0'+dd
} 

if(mm<10) {
    mm='0'+mm
} 

today = mm+'/'+dd+'/'+yyyy;
alert(today);

答案 3 :(得分:-1)

您的代码适用于jshintjs.do

答案 4 :(得分:-1)

您使用的日期字符串不是正确的ISO格式,因此问题是否主要取决于操作系统和浏览器区域设置环境设置。 尝试首先解析字符串并将结果切换到Date构造函数,如下所示:

var date = new Date(Date.parse('Apr 21, 2015'));