我需要将javascript日期/时间格式化为:
2015年2月16日上午06:31:00
我打算使用toLocaleTimeString
一些选项,但我在下面尝试的代码似乎并不适用于Chrome。
function getFormattedDateTime(dateTimeToFormat) {
dateTimeToFormat = new Date(dateTimeToFormat);
var monthOptions = {
month: 'long', year: 'numeric', day: 'numeric',
hour: '2-digit', minute: '2-digit', second: '2-digit'
};
return dateTimeToFormat.toLocaleTimeString('en-us', monthOptions);
}
以上代码的输出 2015年2月16日,上午6:31
它很近,但没有雪茄。 如果它有更好的日期格式化实用程序,jQuery也是一个选项。 jQuery虽然,但没有插件,请。
这是一个节省时间的JSFiddle:https://jsfiddle.net/gxze230b/
在输入错字后,输出字符串现在为: 2015年2月16日,上午6:31:00
答案 0 :(得分:2)
您的代码中有拼写错误。
而不是seconds: '2-digit'
它应该是second: '2-digit'
更新了你的小提琴 https://jsfiddle.net/gxze230b/3/
编辑:经过一段时间的思考,认为最好使用这里给出的答案
Where can I find documentation on formatting a date in JavaScript?
似乎现在不支持所有组合。
答案 1 :(得分:0)
感谢@Amitd的指导,我能够制定一种方法,可以产生 2015年2月16日06:31:00 AM的预期输出
function getFormattedDateTime(dateTimeToFormat) {dateTimeToFormat = new Date(dateTimeToFormat);
var zeroPad = function (val) {
return (val <= 9 ? '0' + val : '' + val);
};
var month = dateTimeToFormat.toLocaleString('en-us', {month: "long"});
var day = dateTimeToFormat.getDate();
var year = dateTimeToFormat.getFullYear();
var hour = ((dateTimeToFormat.getHours() + 11) % 12 + 1);
var minutes = dateTimeToFormat.getMinutes();
var seconds = dateTimeToFormat.getSeconds();
var suffix = (hour <= 12) ? 'AM' : 'PM';
return month + ' ' + zeroPad(day) + ', ' + year + ' ' + zeroPad(hour) + ':' + zeroPad(minutes) + ':' + zeroPad(seconds) + ' ' + suffix;
}