我正在尝试在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
?
答案 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])
);