我需要改变从一个日期/时间2014年8月20日15:30:00看起来像2014年8月20日下午3:30
这可以使用 javascript 的 Date 对象完成吗?
我需要改变从一个日期/时间2014年8月20日15:30:00看起来像2014年8月20日下午3:30
这可以使用 javascript 的 Date 对象完成吗?
是的,您可以使用原生 javascript Date() 对象及其方法。
例如,您可以创建一个函数,如:
function formatDate(date) {
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0'+minutes : minutes;
var strTime = hours + ':' + minutes + ' ' + ampm;
return (date.getMonth()+1) + "/" + date.getDate() + "/" + date.getFullYear() + " " + strTime;
}
var d = new Date();
var e = formatDate(d);
alert(e);
并显示上午/下午和正确的时间。
请记住使用getFullYear()方法而不是 getYear() 因为它已被弃用。
请不要重新发明轮子。已经存在许多开源和 COTS 解决方案来解决这个问题。
请查看以下 JavaScript 库:
更新:我使用下面的Moment.js Luxon写了一个单行。
const { DateTime } = luxon;
const value = DateTime
.fromFormat("2014-08-20 15:30:00", "yyyy-MM-dd HH:mm:ss")
.toFormat('MM/dd/yyyy h:mm a');
console.log(value); // 08/20/2014 3:30 PM
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/1.26.0/luxon.min.js"></script>
这是使用 Moment 的原始版本。由于 Luxon 是 Moment 的继任者,因此我将其作为替代方案包含在内。
const value = moment('2014-08-20 15:30:00').format('MM/DD/YYYY h:mm a');
console.log(value); // 08/20/2014 3:30 pm
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
对于日期部分:(月份为 0 索引,而天数为 1 索引)
var date = new Date('2014-8-20');
console.log((date.getMonth()+1) + '/' + date.getDate() + '/' + date.getFullYear());
暂时您需要创建一个函数来测试不同的情况并进行转换。
我不认为这可以通过本机 Date 对象的内置方法可靠地完成。该toLocaleString
方法靠拢,但如果我记得正确的,它不会正确IE <10.如果你能够使用图书馆这个任务,工作MomentJS是一个非常了不起的库; 它使处理日期和时间变得容易。否则,我认为您将不得不编写一个基本函数来为您提供所需的格式。
function formatDate(date) {
var year = date.getFullYear(),
month = date.getMonth() + 1, // months are zero indexed
day = date.getDate(),
hour = date.getHours(),
minute = date.getMinutes(),
second = date.getSeconds(),
hourFormatted = hour % 12 || 12, // hour returned in 24 hour format
minuteFormatted = minute < 10 ? "0" + minute : minute,
morning = hour < 12 ? "am" : "pm";
return month + "/" + day + "/" + year + " " + hourFormatted + ":" +
minuteFormatted + morning;
}
你可以这样做:
function formatAMPM(date) { // This is to display 12 hour format like you asked
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0'+minutes : minutes;
var strTime = hours + ':' + minutes + ' ' + ampm;
return strTime;
}
var myDate = new Date();
var displayDate = myDate.getMonth()+ '/' +myDate.getDate()+ '/' +myDate.getFullYear()+ ' ' +formatAMPM(myDate);
console.log(displayDate);