簡體   English   中英

以人類可讀的格式顯示兩個日期之間的差異

[英]Difference between two date in an human readable format

我有一個表示日期和現在之間的時差的對象(我使用了Luxon):

{days: -0, hours: -15, minutes: -38, months: -0, seconds: -46.389, years: -0}

我想以一種人類可讀的方式打印這些信息。 因此,在這種情況下:

difference is 15 h, 38 min, 46 s

因此,我不會認為數字等於0,並且應該對結果進行排序,以使其為年,月,日,小時,分鍾,秒。 什么是更聰明的方法呢?

你可以用這樣的東西

function toReadable(obj) {
    var names = {
        days: "d", hours: 'h', minutes: 'min', months: 'm', seconds: 's', years: 'y'
    }
    return Object.keys(obj).reduce((acc, v) => {
        if(obj[v] != 0) acc.push(Math.abs(Math.ceil(obj[v])) + ' ' + names[v]);
        return acc;
    }, []).join(', ')
}

由於不能保證對象的順序,因此可以將順序保留在數組中,並對修改后的名稱使用一些邏輯,例如

 function formatPeriod(obj) { return ['years','months','days','hours','minutes','seconds'].reduce((acc, key) => { let v = parseInt(Math.abs(obj[key])); if (v != 0) acc.push(v + ' ' + key.slice(0,key=='minutes'?3:1)); return acc; }, []).join(', '); } // Example var data = {days: -0, hours: -15, minutes: -38, months: -0, seconds: -46.389, years: -0}; console.log(formatPeriod(data)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM