Javascript Don';t使用Moment.js显示午夜时间

Javascript Don';t使用Moment.js显示午夜时间,javascript,momentjs,Javascript,Momentjs,如果不是午夜,我如何仅显示时间?例如,请看下面的第一个示例 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.

如果不是午夜,我如何仅显示时间?例如,请看下面的第一个示例

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/yyyyyy h:MM:ss A”,但我希望有一种更合适的方法来这样做。

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


如果需要毫秒,可以使用
isname()
startOf()


变量时间=时刻()。格式(“Hms”)!="000" ? 矩().format(“你想要什么格式”):“”@Vanojx1请看我编辑的帖子。看起来我应该使用你推荐的
moment().format(“Hms”)=“000”
,然后使用不同的格式。对吗?谢谢,“what format you want”(你想要的格式)是指你的日期所需的最终格式,只需使用
函数myMoment(t){return t?(t.substring(11)='00:00:00'?moment(t).format('MM/DD/yyyyy'):moment(t).format('MM/DD/yyyyyy h:MM:ss A'):''):'';
。不知道这一刻是否有某种支持的选择。谢谢如果输入字符串是'2016-01-28',我推荐的方法会起作用,这样它就不会像您的那样“脆弱”。谢谢。我同意,这就是为什么我选择你的解决方案作为正确答案的原因。
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'));
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')));