読者です 読者をやめる 読者になる 読者になる

彼女からは、おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

Java で 2つの時間(時刻)の差を HH:mm:ss 形式で表現する(Appache Commons Lang)

本日 Java

ある処理についてかかった時間(開始時刻と終了時刻の差)

を表そうとしてまして。


べつに大したことないだろうと思っていたんですが,結構大変でした。ググっても,なかなかこれだというクラスなりメソッドなりが見つけられなくて。(みなさん,Dateクラスとかを器用につかって,いろいろと工夫されているようでしたが,僕は無理です。性格的に。)


やっと意図していたものを見つけましたので,お裾分けです。開始時刻と終了時刻の差を "HH:mm:ss" 形式で表現することができます。


いつもお世話になってる commons のライブラリ。今回は「Lang」というものを使います。まずは,次のサイトからダウンロードして,jar ファイルにクラスパスをば。


で,この中にいろいろ便利なクラスが入っているんですが,今回は「DurationFormatUtils クラス」を使いました(org.apache.commons.lang.time.DurationFormatUtils)。


使い方は,一応マニュアルもあるみたいですが(Overview (Commons Lang 2.4 API))日本語のものは見つけられなかったので,サンプルを書いておきます。よろしければ参考にしてください。

サンプルコード

import java.util.Date;
import org.apache.commons.lang.time.DurationFormatUtils;

public class TimeSample {

    /**
     * 開始時刻と終了時刻から処理時間を返す
     * 引数が基準時からの経過時間をミリ秒で表したもののとき
     */
    public String toDiffTime(long startMillis, long endMillis) {
        String diffTime = DurationFormatUtils.formatPeriod(startMillis,
                endMillis, "HH:mm:ss");
        return diffTime;
    }

    /**
     * 開始時刻と終了時刻から処理時間を返す
     * 引数が Date 型のとき
     */
    public String toDiffTime(Date startTime, Date endTime) {
        String diffTime = DurationFormatUtils.formatPeriod(startTime.getTime(),
                endTime.getTime(), "HH:mm:ss");
        return diffTime;
    }
}

参考サイト

今日は次のサイトを参考にさせていただきました。大変助かりました。感謝です。