Javascript 功能和意外 'NAN'
Javascript function and unexpected 'NAN'
我尝试编写一个函数将日期和时间从字符串转换为日期。这是我的代码:
var date_one = '2015-08-12 14:15:00';
var date_two = '2015-08-13 15:00:00';
console.log(date_one); //2015-08-12 14:15:00
console.log(date_two); //2015-08-13 15:00:00
var timeStamp_date_one = new Date(date_one).getTime() ; //NAN?
console.log(typeof timeStamp_date_one);//number
var timeStamp_date_two = new Date(date_two).getTime() ;//NAN?
console.log(typeof timeStamp_date_two);//number
//since you are having both datetime in numer time
//you can compare then to any logical oparation ( >, < ,= ,!= ,== ,!== ,>= AND <=)
//to be able to work with this date and time agin you need to convert it to an object
var newTime = new Date(timeStamp_date_one) ;
console.log(typeof newTime) ;//object
// you can the use this following function to convert your date and time to any format you want
console.log(DateAndTimeFormat(newTime , 'time')) ;// NaN:NaN ???
console.log(DateAndTimeFormat(newTime , 'date_time')) ;// NaN/NaN/NaN NaN:NaN ???
function DateAndTimeFormat(dateAndTime, type) {
switch (type) {
case 'time':
return dateAndTime.getHours() + ':' + (dateAndTime.getMinutes() < 10 ? '0' : '') +
dateAndTime.getMinutes()
case 'date':
return dateAndTime.getMonth() + 1 + '/' + dateAndTime.getDate() + '/' +
dateAndTime.getFullYear()
case 'date_time':
return dateAndTime.getMonth() + 1 + '/' + dateAndTime.getDate() + '/' +
dateAndTime.getFullYear() + ' ' + dateAndTime.getHours() + ':' +
(dateAndTime.getMinutes() < 10 ? '0' : '') + dateAndTime.getMinutes()
}
}
为什么在这种情况下我总是取 "Not-a-Number" 值?我希望 Object 可以像这段代码一样转移到 Data 对象。有人可以告诉我为什么以及如何修复该代码?非常感谢
如 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date 所指定,当像您一样处理年份时,格式不是 "YYYY-MM-DD HH:MM:SS" 而是 "YYYY-MM-DDTHH:MM:SS"(注意 'T' 而不是 space)
var date_one = '2015-08-12T14:15:00';
var date_two = '2015-08-13T15:00:00';
有了这些值,您的代码就可以工作了。
这是相对于ISO 8601 standard
我建议首先解析表示日期的字符串并将其拆分成块,然后使用 new Date(year, month, day, hour, minutes, seconds, milliseconds);
构造函数以 100% 确保没有任何本地日期格式问题。
我尝试编写一个函数将日期和时间从字符串转换为日期。这是我的代码:
var date_one = '2015-08-12 14:15:00';
var date_two = '2015-08-13 15:00:00';
console.log(date_one); //2015-08-12 14:15:00
console.log(date_two); //2015-08-13 15:00:00
var timeStamp_date_one = new Date(date_one).getTime() ; //NAN?
console.log(typeof timeStamp_date_one);//number
var timeStamp_date_two = new Date(date_two).getTime() ;//NAN?
console.log(typeof timeStamp_date_two);//number
//since you are having both datetime in numer time
//you can compare then to any logical oparation ( >, < ,= ,!= ,== ,!== ,>= AND <=)
//to be able to work with this date and time agin you need to convert it to an object
var newTime = new Date(timeStamp_date_one) ;
console.log(typeof newTime) ;//object
// you can the use this following function to convert your date and time to any format you want
console.log(DateAndTimeFormat(newTime , 'time')) ;// NaN:NaN ???
console.log(DateAndTimeFormat(newTime , 'date_time')) ;// NaN/NaN/NaN NaN:NaN ???
function DateAndTimeFormat(dateAndTime, type) {
switch (type) {
case 'time':
return dateAndTime.getHours() + ':' + (dateAndTime.getMinutes() < 10 ? '0' : '') +
dateAndTime.getMinutes()
case 'date':
return dateAndTime.getMonth() + 1 + '/' + dateAndTime.getDate() + '/' +
dateAndTime.getFullYear()
case 'date_time':
return dateAndTime.getMonth() + 1 + '/' + dateAndTime.getDate() + '/' +
dateAndTime.getFullYear() + ' ' + dateAndTime.getHours() + ':' +
(dateAndTime.getMinutes() < 10 ? '0' : '') + dateAndTime.getMinutes()
}
}
为什么在这种情况下我总是取 "Not-a-Number" 值?我希望 Object 可以像这段代码一样转移到 Data 对象。有人可以告诉我为什么以及如何修复该代码?非常感谢
如 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date 所指定,当像您一样处理年份时,格式不是 "YYYY-MM-DD HH:MM:SS" 而是 "YYYY-MM-DDTHH:MM:SS"(注意 'T' 而不是 space)
var date_one = '2015-08-12T14:15:00';
var date_two = '2015-08-13T15:00:00';
有了这些值,您的代码就可以工作了。
这是相对于ISO 8601 standard
我建议首先解析表示日期的字符串并将其拆分成块,然后使用 new Date(year, month, day, hour, minutes, seconds, milliseconds);
构造函数以 100% 确保没有任何本地日期格式问题。