Javascript功能和意外的' NAN'

时间:2015-08-12 15:30:18

标签: javascript date time

我尝试编写一个函数来将日期和时间从字符串转换为日期。这是我的代码:

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()

                }
            }

为什么在这种情况下,我会采用&#34;非数字&#34;价值?我希望Object可以像这个代码一样转移到Data对象。有人可以告诉我为什么以及如何修复该代码?非常感谢

2 个答案:

答案 0 :(得分:2)

正如https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date所指定的那样,当你正在做多年的工作时,格式不是&#34; YYYY-MM-DD HH:MM:SS&#34;但是&#34; YYYY-MM-DDTHH:MM:SS&#34; (注意&#39; T&#39;而不是空格)

var date_one = '2015-08-12T14:15:00'; 
var date_two = '2015-08-13T15:00:00';

使用这些值,您的代码可以正常运行。

这与ISO 8601 standard

相关

答案 1 :(得分:1)

我建议首先解析并分成代表日期的字符串,然后使用new Date(year, month, day, hour, minutes, seconds, milliseconds);构造函数100%确定没有任何本地日期格式问题。