一尘不染

将以秒为单位的时间间隔转换为更易理解的形式

javascript

我需要一个代码段,用于将以秒为单位的时间转换成某种人类可读的形式。该函数应接收一个数字并输出如下所示的字符串:

34 seconds 
12 minutes 
4 hours 
5 days 
4 months
1 year

无需格式化,将采用硬编码格式。


阅读 349

收藏
2020-05-01

共1个答案

一尘不染

在Royi的帮助下,我们获得了 以人类可读形式输出时间间隔的 代码:

function millisecondsToStr (milliseconds) {
    // TIP: to find current time in milliseconds, use:
    // var  current_time_milliseconds = new Date().getTime();

    function numberEnding (number) {
        return (number > 1) ? 's' : '';
    }

    var temp = Math.floor(milliseconds / 1000);
    var years = Math.floor(temp / 31536000);
    if (years) {
        return years + ' year' + numberEnding(years);
    }
    //TODO: Months! Maybe weeks? 
    var days = Math.floor((temp %= 31536000) / 86400);
    if (days) {
        return days + ' day' + numberEnding(days);
    }
    var hours = Math.floor((temp %= 86400) / 3600);
    if (hours) {
        return hours + ' hour' + numberEnding(hours);
    }
    var minutes = Math.floor((temp %= 3600) / 60);
    if (minutes) {
        return minutes + ' minute' + numberEnding(minutes);
    }
    var seconds = temp % 60;
    if (seconds) {
        return seconds + ' second' + numberEnding(seconds);
    }
    return 'less than a second'; //'just now' //or other string you like;
}
2020-05-01