如何在javascript中设置am/pm

如何在javascript中设置am/pm,javascript,time,Javascript,Time,我正在使用新日期创建自定义时间,并且我正在使用一个函数设置am/pm中的时间格式: const formatTimeAMPM=日期,午夜={am:am,pm:pm}=>{ var hours=date.getHours; var minutes=date.getMinutes; var ampm=hours>=12?`midnight.am}`:`midnight.pm}`; 小时数=小时数%12; 小时数=小时数?小时数:12;//小时数“0”应为“12” 分钟=分钟

我正在使用新日期创建自定义时间,并且我正在使用一个函数设置am/pm中的时间格式:

const formatTimeAMPM=日期,午夜={am:am,pm:pm}=>{ var hours=date.getHours; var minutes=date.getMinutes; var ampm=hours>=12?`midnight.am}`:`midnight.pm}`; 小时数=小时数%12; 小时数=小时数?小时数:12;//小时数“0”应为“12” 分钟=分钟<10?0+分钟:分钟; 小时=小时<10?0+小时:小时; var strTime=hours+:+minutes++ampm; 返回时间; }; 让startDate=new date.now; console.log“更改前:”,formatTimeAMPMstartDate; startDate.setHours8,30,0,0;
console.log'after change:',formatTimeAMPMstartDate 您的am/pm支票是反向的:

var ampm = hours >= 12 ? ` ${midnight.am}` : ` ${midnight.pm}`;
如果小时数>=12,则应为PM而非AM,因此应为:

var ampm = hours >= 12 ? ` ${midnight.pm}` : ` ${midnight.am}`;
现在,如果您运行它,它将显示上午8:30,如果您将小时设置为20,它将显示下午8:30


这将解决您当前的问题,但最好使用现有的库进行日期格式化,因为它可能会变得复杂,尤其是使用i18n。有一些流行的工具,如和,可以帮你完成繁重的工作。

像这样:使用moment.js。为什么要重写轮子?格式化、解析、时区、差异……矩有很多功能,但矩.min.js的大小是16.7k,我不会租卡车来穿针线。这个功能也可以使用,我在其他地方也使用过,我的问题是当我更改小时和分钟时,如何设置am。小时8是上午8点,所以逻辑应该颠倒。如果您只想用当前逻辑显示上午8点,您可以将小时设置为20,即:startDate.setHours20,30,0,0;。