0

の形式で、開始時間と停止時間の 2 つの時間があります05:00 (HH:MM)。2 つの時間の差が必要です。開始時間が05:00で終了時間が15:20の場合、2 つの時間差は10 Hours 20 minutesになります。それらをdatetimeオブジェクトに変換し、ミリ秒を使用して時間差を取得する必要がありますか、これを行うためのより良い方法はありますか?

4

1 に答える 1

6

Joda Timeを使用します。LocalTimeタイプで開始時間と終了時間を表し、それらの間に を作成しますPeriod

Android で利用可能な Joda Time のカットダウン バージョンがあるかどうかはわかりません (アプリが小さい場合は、少し大きいかもしれません) が、単純な JDK ライブラリを使用するよりもはるかに簡単になります。もちろん、それを行うことができます-両方をミリ秒に変換し、違いを見つけてから算術を行います。それは比較的痛いでしょう:(

サンプルコード:

import org.joda.time.*;

public class Test {    
    public static void main(String args[]) {
        LocalTime start = new LocalTime(5, 0);
        LocalTime end = new LocalTime(15, 20);
        Period period = new Period(start, end, PeriodType.time());
        System.out.println(period.getHours()); // 10
        System.out.println(period.getMinutes()); // 20        
    }
}

そして、JDKクラスを使用するだけです:

import java.util.*;
import java.util.concurrent.*;
import java.text.*;

public class Test {    
    public static void main(String args[]) throws ParseException {
        DateFormat format = new SimpleDateFormat("HH:mm", Locale.US);
        format.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date start = format.parse("05:00");
        Date end = format.parse("15:20");

        long difference = end.getTime() - start.getTime();

        long hours = TimeUnit.MILLISECONDS.toHours(difference);
        long minutes = TimeUnit.MILLISECONDS.toMinutes(difference) % 60;

        System.out.println("Hours: " + hours);
        System.out.println("Minutes: " + minutes);
    }
}

endこれは後であることを前提としていることに注意してくださいstart- 負の時間に対して望ましい結果を得る必要があります。

于 2013-05-27T08:56:36.630 に答える