14

StartTime と EndTime などの 2 つの文字列変数があります。EndTime を StartTime で減算して TotalTime を計算する必要があります。

StartTime と EndTime の形式は次のとおりです。

StartTime = "08:00 AM";
EndTime = "04:00 PM";

時間と分形式の TotalTime。Androidでこれを計算する方法は?

4

7 に答える 7

44

以下のコードを試してください。

// 時間形式が("hh:mm a") 形式であるとします

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm a");

date1 = simpleDateFormat.parse("08:00 AM");
date2 = simpleDateFormat.parse("04:00 PM");

long difference = date2.getTime() - date1.getTime(); 
days = (int) (difference / (1000*60*60*24));  
hours = (int) ((difference - (1000*60*60*24*days)) / (1000*60*60)); 
min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours)) / (1000*60);
hours = (hours < 0 ? -hours : hours);
Log.i("======= Hours"," :: "+hours);

出力- 時間 :: 8

于 2013-01-01T12:54:58.070 に答える
5

注: Chirag Raval が提供する以下のコードを修正しました。Chirag が提供するコードでは、22:00 から 07:00 までの時間を見つけようとすると問題が発生するためです。

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
Date startDate = simpleDateFormat.parse("22:00");
Date endDate = simpleDateFormat.parse("07:00");

long difference = endDate.getTime() - startDate.getTime(); 
if(difference<0)
{
    Date dateMax = simpleDateFormat.parse("24:00");
    Date dateMin = simpleDateFormat.parse("00:00");
    difference=(dateMax.getTime() -startDate.getTime() )+(endDate.getTime()-dateMin.getTime());
}
int days = (int) (difference / (1000*60*60*24));  
int hours = (int) ((difference - (1000*60*60*24*days)) / (1000*60*60)); 
int min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours)) / (1000*60);
Log.i("log_tag","Hours: "+hours+", Mins: "+min); 

結果は次のようになります: 時間: 9、分: 0

于 2015-07-30T13:28:56.870 に答える
4

DateFormatを見てください。これを使用して、parse(String source) メソッドで文字列を解析できます。2 つの Dates オブジェクトを簡単に操作して、必要なものを取得できます。

DateFormat df = DateFormat.getInstance();
Date date1 = df.parse(string1);
Date date2 = df.parse(string2);
long difference = date1.getTime() - date2.getTime();

days = (int) (difference / (1000*60*60*24));  
hours = (int) ((difference - (1000*60*60*24*days)) / (1000*60*60)); 
min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours)) / (1000*60);

String diffHours = df.format(hours);

日付違いの場合

Date myDate = new Date(difference);

日付を表示する :

String diff = df.format(myDate);
于 2013-01-01T13:02:49.370 に答える
3

これを試してください....

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");

    try {
        date1 = simpleDateFormat.parse("08:00 AM");
    } catch (ParseException e) {
        e.printStackTrace();
    }

    try {
        date2 = simpleDateFormat.parse("04:00 PM");
    } catch (ParseException e) {
        e.printStackTrace();
    }

    long difference = date2.getTime() - date1.getTime();
    int days = (int) (difference / (1000 * 60 * 60 * 24));
    int hours = (int) ((difference - (1000 * 60 * 60 * 24 * days)) / (1000 * 60 * 60));
    int min = (int) (difference - (1000 * 60 * 60 * 24 * days) - (1000 * 60 * 60 * hours))
            / (1000 * 60);
    hours = (hours < 0 ? -hours : hours);
    Log.i("======= Hours", " :: " + hours);
于 2014-03-29T10:30:02.013 に答える