示例字符串:2014-12-31 11:59 pm
目前,JavaScript甚至没有解析时间,因为结果时间码返回12:00 am,无论我提供什么时间。
new Date("2014-12-31 11:59 pm")
后的输出结果为:2014-12-31 12:00 am
修改
即使在期望格式并手动解析字符串之后,new Date()
构造函数仍然没有...
var sourceTime = "2014-12-31 11:59 pm";
var dateRaw = sourceTime.split(' ');
var dateYMD = dateRaw[0].split('-');
var dateTime = dateRaw[1].split(':');
var dateAmPm = dateRaw[2].toLowerCase();
// Adjust human month to system month...
dateYMD[1] = (parseInt(dateYMD[1]) - 1).toString();
// Convert 12h to 24h...
if(dateAmPm == 'pm') {
if(parseInt(dateTime[0]) < 12) dateTime[0] = (parseInt(dateTime[0])+12).toString();
} else {
if(parseInt(dateTime[0]) == 12) dateTime[0] = 0;
}
console.log(dateYMD);
console.log(dateTime);
var dateParsed = new Date(dateYMD[0], dateYMD[1], dateYMD[2], dateTime[0], dateTime[1]);
控制台日志显示传递给new Date()
的正确值但我仍然得到错误的输出:(
答案 0 :(得分:2)
在使用日期时,我总是使用Moment.js而不是使用JavaScript中的标准Date
。使用不同格式的日期和自定义所有内容非常容易。
在您的情况下,您可以执行以下操作:
var datestr = "2014-12-31 11:59 pm";
var date = moment(datestr,"YYYY-MM-DD HH:mm a")
$("#log").text(date.format("HH:mm:SS MMM DD YYYY"));
这是一个jsfiddle来试试。
答案 1 :(得分:0)
据我所知,不可能在JavaScript中更改由Date构造函数或Date.parse()解析的Date String的格式。格式规范可以在RFC822或ECMAScript Standards找到,也不支持上午/下午。
(取自MDN)
的链接答案 2 :(得分:0)
我已经解决了我的问题..解决方案..
let ThisDate = this.startDate0;
let FinalYear = ThisDate.substring(6,10);
let FinalMonth = ThisDate.substring(3,5);
let FinalDay = ThisDate.substring(0,2);
let FinalHour = ThisDate.substring(11, 13);
let FinalMinutes = ThisDate.substring(14,16);
let FinalDate = FinalYear + "-" + FinalMonth + "-" + FinalDay + " " + FinalHour + ":" + FinalMinutes;