2014-11-02 47 views
1

只有在不是00:00:00的情况下,如何使用moment.js显示时间?但是,下面的作品看起来像是一团糟。由于仅在不是00:00:00时使用moment.js的显示时间

function convertDate(d) { 
    var l=d.length; 
    var f='DD/MM/YYYY'+((l==19 && d.substr(l - 8)=='00:00:00')?'':', h:mm:ss a'); 
    return moment(d).format(f); 
} 
console.log(convertDate("2014-11-02 02:04:05")); 
console.log(convertDate("2014-11-02 00:00:00")); 

回答

3

您可以使用下面函数来获取格式

var getDate = function(d) 
{ 
    var format = "DD/MM/YYYY h:mm:ss a"; 
    if(moment(d).startOf('day').valueOf() === moment(d).valueOf()) 
    { 
     format = "DD/MM/YYYY" 
    } 
    return moment(d).format(format); 
} 

console.log(getDate("2014-11-02 02:04:05")); 
console.log(getDate("2014-11-02 00:00:00")); 

从当天开始的蜱比较输入时间,如果两者相同,这意味着时间为零。

+0

我缺少的东西HTTP://jsfiddle.net/ne397q4q/ – user1032531 2014-11-02 14:29:17

+0

作为函数名暗示,它只是返回的格式..没有日期:) – harishr 2014-11-02 14:42:42

+0

是的,但'valueOf'总是相同的。如果我console.log只是'date.startOf('day')',对象是不同的,但不是返回的valueOf? – user1032531 2014-11-02 14:44:56

2

您可以使用时刻解析日期,然后根据小时/分钟/秒值使用不同的格式。 ?

var date = moment(d); 
var result; 
if (date.hours() == 0 && date.minutes() == 0 && date.seconds() == 0) { 
    // format without hours/minutes/seconds 
    result = date.format('DD/MM/YYYY'); 
} 
else { 
    // complete format 
    result = date.format('DD/MM/YYYY, h:mm:ss a'); // or whatever it is 
} 

Documentation for getters/setters use.

+0

很好的答案,有时我们会不必要地使事情复杂化.. – harishr 2014-11-02 14:04:09

相关问题