Javascript:格式化日期时间会产生NaN结果

时间:2015-05-21 10:03:16

标签: javascript datetime

我正在尝试在Javascript中格式化一个mysql日期时间对象,但我只获得了NaN结果。

数据库中的值例如是此datetime对象:

2015-08-27 21:36:03

在我的JS中,我尝试按如下方式转换此对象:

var formattedDate = new Date(datetimeObj);

function formatDate(date) {
                var hours = date.getHours();
                var minutes = date.getMinutes();
                hours = hours % 12;
                hours = hours ? hours : 12; // the hour '0' should be '12'
                minutes = minutes < 10 ? '0'+minutes : minutes;
                var strTime = hours + ':' + minutes;
                return date.getMonth()+1 + "/" + date.getDate() + "/" + date.getFullYear() + " " + strTime;
}

为什么我在打印变量时会得到NaN/NaN/NaN 12:NaN

3 个答案:

答案 0 :(得分:1)

有些浏览器不会解析字符串&#34; 2015-08-27 21:36:03&#34;作为有效日期。为获得最佳效果,请使用标准ISO日期字符串,如

2015-08-27T21:36:03Z 

答案 1 :(得分:0)

试试这个:

<script>
  var formattedDate = new Date("2015-08-27 21:36:03");
  console.log(formatDate(formattedDate));
  function formatDate(date)
  {
    var hours = date.getHours();
    var minutes = date.getMinutes();
    hours = hours % 12;
    hours = hours ? hours : 12; // the hour '0' should be '12'
    minutes = minutes < 10 ? '0' + minutes : minutes;
    var strTime = hours + ':' + minutes;
    return date.getMonth() + 1 + "/" + date.getDate() + "/" + date.getFullYear() + " " + strTime;
  }
</script>

它的代码相同,只是传递了函数中的输入..

答案 2 :(得分:0)

Here你可以在你的队列中找到答案,这与RegEx

类似
var dateString = "2010-08-09 01:02:03";
var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
var dateArray = reggie.exec(dateString); 
var dateObject = new Date(
    (+dateArray[1]),
    (+dateArray[2])-1, // Careful, month starts at 0!
    (+dateArray[3]),
    (+dateArray[4]),
    (+dateArray[5]),
    (+dateArray[6])
);