0

そこで、2 つの日付の時間差を計算して、その差を日、時間、分で出力しようとしています。このサンプル コードを Java コンソール アプリケーションとして実行したところ、正常に動作しましたが、Android で同じことを実行しようとすると、ガベージ データが発生します。Joda Time は Android には複雑すぎますか? 代わりに Date4j を試す必要がありますか?

import java.util.; import org.joda.;
import org.joda.time.DateTime;

public class time {

        //(5000);
        final static long MILLIS_IN_DAY = 86400000;
        final static long MILLIS_IN_HOUR = 3600000;
        final static long MILLIS_IN_MINUTE = 60000;

    public static void main(String[] args){

        long day, hour, minute;

        //MAKE SURE TO CHECK IF USER SET(LATER)
        // DateTime(2013,9,12,0,0)
                DateTime d1 = new DateTime(2013,9,17,0,0);
                DateTime d2 = new DateTime(2013,9,12,21,30);


                //long date = d2.getMillis();

                DateTime d3 = new DateTime();

                long diffInMillis = d3.getMillis() - d1.getMillis();
                minute = (diffInMillis/MILLIS_IN_MINUTE)%60;
                hour = (diffInMillis/MILLIS_IN_HOUR)%24;
                day = (diffInMillis/MILLIS_IN_DAY);


                System.out.println(Long.toString(d1.getMillis()));
                System.out.println(Long.toString(d2.getMillis()));  

                System.out.println(Long.toString(d3.getMillis()));

                System.out.println(Long.toString(diffInMillis));

                System.out.println("Minutes:");
                System.out.println(Long.toString(minute));
                System.out.println("Hours:");
                System.out.println(Long.toString(hour));
                System.out.println("Days:");
                System.out.println(Long.toString(day));
    }
    }
4

1 に答える 1

3

この値を手動で計算しないでください。Joda-Time メソッドで計算します。のメソッドを使用する理由も使用しない理由もJodaありません。 たとえば 、DaysHoursMintesでJoda

    System.out.println("Minutes:");
    System.out.println(Minutes.minutesBetween(d2, d1).getMinutes() % 60);
    System.out.println("Hours:");
    System.out.println(Hours.hoursBetween(d2, d1).getHours() % 24);
    System.out.println("Days:");
    System.out.println(Days.daysBetween(d2, d1).getDays());  

またはピリオド付き

    Period period = new Period(d2, d1);
    System.out.println("Minutes:");
    System.out.println(period.getMinutes());
    System.out.println("Hours:");
    System.out.println(period.getHours());
    System.out.println("Days:");
    System.out.println(period.getDays());
于 2013-09-18T17:03:40.003 に答える