1. ホーム
  2. javascript

[解決済み] 秒単位で指定された時間間隔を、より読みやすい形式に変換する

2023-07-22 02:10:02

質問

秒数で与えられた時間を、人間が読める形に変換するコードスニペットが必要です。この関数は、数値を受け取り、このような文字列を出力する必要があります。

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

フォーマット不要、ハードコードされたフォーマットが行く。

どのように解決するのですか?

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;
}