对不起,我可能因为这个而受到抨击但作为一个新手,我想让这项工作在日期。我有这段代码:
var date = new Date('Apr 21, 2015');
当我使用此代码提醒时:
var date = new Date('Apr 21, 2015');
alert(date.getFullYear());
alert(date.getMonth());
alert(date.getDate ());
它显示NaN。有人可以建议我怎么做吗?
答案 0 :(得分:2)
如果您将以下内容插入jsfiddle,则可以正常使用2015
,3
和21
(至少在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)
答案 4 :(得分:-1)
您使用的日期字符串不是正确的ISO格式,因此问题是否主要取决于操作系统和浏览器区域设置环境设置。 尝试首先解析字符串并将结果切换到Date构造函数,如下所示:
var date = new Date(Date.parse('Apr 21, 2015'));