2014-11-02 49 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

相關問題