115


46

任意のミリ秒数をDays、Hours、Minutes Secondに変換する必要があります。

たとえば、10日、5時間、13分、1秒です。

19 Answer


217


他に誰も立ち上がっていないので、これを行うための簡単なコードを書くつもりです。

x = ms / 1000
seconds = x % 60
x /= 60
minutes = x % 60
x /= 60
hours = x % 24
x /= 24
days = x

私はあなたが数日でやめて何ヶ月も聞かなかったことをうれしく思います。 :)

上記では、 `/`は切り捨て整数除算を表すと仮定されていることに注意してください。 このコードを `/`が浮動小数点除算を表す言語で使用する場合は、必要に応じて除算の結果を手動で切り捨てる必要があります。


56


Aをミリ秒数とします。 それなら、

seconds=(A/1000)%60
minutes=(A/(1000*60))%60
hours=(A/(1000*60*60))%24

以下同様です( `%`はモジュラス演算子です)。

お役に立てれば。


24


以下の両方の解決策は* javascript *を使用します(解決策が言語非依存であることはわかりませんでした)。 両方の解決策は、持続時間が1ヶ月を超える場合は延長する必要があります。

解決策1:Dateオブジェクトを使う

var date = new Date(536643021);
var str = '';
str += date.getUTCDate()-1 + " days, ";
str += date.getUTCHours() + " hours, ";
str += date.getUTCMinutes() + " minutes, ";
str += date.getUTCSeconds() + " seconds, ";
str += date.getUTCMilliseconds() + " millis";
console.log(str);

与えます:

"6 days, 5 hours, 4 minutes, 3 seconds, 21 millis"

ライブラリは役に立ちますが、ホイールを作り直すことができるときはなぜライブラリを使用するのでしょう。 :)

解決策2:自分のパーサーを書く

var getDuration = function(millis){
    var dur = {};
    var units = [
        {label:"millis",    mod:1000},
        {label:"seconds",   mod:60},
        {label:"minutes",   mod:60},
        {label:"hours",     mod:24},
        {label:"days",      mod:31}
    ];
    // calculate the individual unit values...
    units.forEach(function(u){
        millis = (millis - (dur[u.label] = (millis % u.mod))) / u.mod;
    });
    // convert object to a string representation...
    var nonZero = function(u){ return dur[u.label]; };
    dur.toString = function(){
        return units
            .reverse()
            .filter(nonZero)
            .map(function(u){
                return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label);
            })
            .join(', ');
    };
    return dur;
};

あなたが必要とするどんなフィールドでも、 "duration"オブジェクトを作成します。 タイムスタンプのフォーマットは簡単になります…​

console.log(getDuration(536643021).toString());

与えます:

"6 days, 5 hours, 4 minutes, 3 seconds, 21 millis"


20


http://commons.apache.org/lang[Apache Commons Lang]には、http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/index.html?org/apache/commons/があります。 http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/time/DurationFormatUtilsのような非常に役立つメソッドがあるlang3 / time / DurationFormatUtils.html [DurationFormatUtils]。 html#formatDurationWords%28long、%20boolean、%20boolean%29 [formatDurationWords]。


7


あなたが使っている言語の日時関数を使うべきですが、ただ楽しみのためにここにコードがあります:

intミリ秒= someNumber;

int seconds =ミリ秒/ 1000;

int minutes =秒/ 60;

秒%= 60。

int hours = minutes / 60;

分%= 60。

int days =時/ 24;

時間%= 24。


4


これは私が書いた方法です。 これは `integer milliseconds '値を取り、`人間が読める文字列 `を返します。

public String convertMS(int ms) {
    int seconds = (int) ((ms / 1000) % 60);
    int minutes = (int) (((ms / 1000) / 60) % 60);
    int hours = (int) ((((ms / 1000) / 60) / 60) % 24);

    String sec, min, hrs;
    if(seconds<10)  sec="0"+seconds;
    else            sec= ""+seconds;
    if(minutes<10)  min="0"+minutes;
    else            min= ""+minutes;
    if(hours<10)    hrs="0"+hours;
    else            hrs= ""+hours;

    if(hours == 0)  return min+":"+sec;
    else    return hrs+":"+min+":"+sec;

}


4


関数convertTime(時間){var millis =時間%1000; time = parseInt(time / 1000); var seconds =時間%60; time = parseInt(time / 60); var minutes =時間%60; time = parseInt(time / 60); var hours =時間%24; var out = ""; if(時間


2


Javaで

public static String formatMs(long millis) {
    long hours = TimeUnit.MILLISECONDS.toHours(millis);
    long mins = TimeUnit.MILLISECONDS.toMinutes(millis);
    long secs = TimeUnit.MILLISECONDS.toSeconds(millis);
    return String.format("%dh %d min, %d sec",
            hours,
            mins - TimeUnit.HOURS.toMinutes(hours),
            secs - TimeUnit.MINUTES.toSeconds(mins)
    );
}

このようなものを与えます:

12時間1分34秒


2


あなたの言語/選択したフレームワークが提供する日付/時刻関数/ライブラリを使うことをお勧めします。 また、日付/タイムスタンプを渡したり、人間が読める形式の文字列を出力したりするための簡単な方法を提供しているので、文字列の書式設定関数も調べてください。


2


なぜこんなにしないでください。

var ms = 86400。

var seconds = ms / 1000; //86.4

var minutes =秒/ 60。 //1.4400000000000002

var hours = minutes / 60; //0.024000000000000004

var days =時/ 24; //0.0010000000000000002

そしてfloat精度を扱う 数(分、固定(5))//1.44