如果午夜使用时刻.js,则不显示时间

Don't display time if midnight using Moment.js

本文关键字:显示 时间 js 午夜 时刻 如果      更新时间:2023-09-26

如何使用 http://momentjs.com/docs/仅在不是午夜时才显示时间? 例如,请看下面的第一个示例。

console.log(moment('2016-01-28 00:00:00').format('MM/DD/YYYY h:mm:ss A'));
// Desire 01/28/2016, Get 01/28/2016 12:00:00 AM
console.log(moment('2016-01-28 05:03:50').format('MM/DD/YYYY h:mm:ss A'));
// Works correctly.  Desire 01/28/2016 5:03:50 AM, Get 01/28/2016 5:03:50 AM

一个可能的非优雅解决方案是使用 JavaScript 检查日期时间是否与 00:00:00 尾随,如果是,请提供格式字符串"MM/DD/YYYY"而不是"MM/DD/YYYY h:mm:ss A",但我希望有更合适的方法可以做到这一点。

有很多方法。 这是一种方法(对于大多数目的来说足够简洁):

var dt = moment('2016-01-28 00:00:00');
console.log(dt.hours() === 0 && dt.minutes() === 0 && dt.seconds()=== 0 ? dt.format('MM/DD/YYYY'): 
       dt.format('MM/DD/YYYY h:mm:ss A'));

如果毫秒是一个问题,您可以使用isSame()startOf()

const dt = moment('2020-10-31 00:00:00');
console.log(dt.format('MM/DD/YYYY' + (dt.isSame(moment(dt).startOf('date')) ? '' : ' h:mm:ss A')));