2016-11-07 46 views
1

私のアプリには、データベースにエントリが格納された時点からデータベースからフェッチされた時点までの経過時間が表示されます。androidで経過時間と日付を計算する方法

私は現在、私に秒単位で経過時間を与えるこのような何かやっている:

   SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss aa"); 


       Date systemDate = Calendar.getInstance().getTime(); 
       String myDate = sdf.format(systemDate); 

       Date Date1 = sdf.parse(myDate); 

       Date Date2 = sdf.parse(savedDate); 
       int dateDiff = getTimeRemaining(); 

       long millse = Date1.getTime() - Date2.getTime(); 
       long mills = Math.abs(millse);              
       long Mins = mills/(1000*60); 

       String diff = +dateDiff+ "days " + Mins+ " mins"; 
       cal[1] = "" +Mins; 
       t3.setText(diff); 

をしかし、私はまた、データが格納されていたので、それが日の何を含めるません。現在のところ、1日が終わるとリセットされます。私はそれがN日後に合計の分を与えることを望みます。私はどうすればいいのですか?前もって感謝します。

+0

の可能性のある重複した[どのように私はJavaで経過時間を計測しますか?](http://stackoverflow.com/questions/1770010/how-do-i-measure-time-elapsed-in-java) – abbath

+0

これを試してみてくださいhttps://www.mkyong.com/java/java-time-elapsed-in-days-hours-minutes-seconds/ –

+0

@DeepakSachdevaありがとうございます!!それが私の問題を解決しました。 :) – Rujul

答えて

0

まず、データベース格納時から現在までの秒数を決定する必要があります。

long ageOfDatabaseEntry = (System.currentTimeMillis() - databaseEnteredTimeMillis) 

あなたはその数によって年齢はミリ秒単位の残りの数を取得するにはmoduloそして、あなたが望むどのように多くの日を決定する必要があります。

long getRemainingMinutes(long age, int days) { 
    // Use the modulus operator to get the remainder of the age and days 
    long remainder = age % (days * 86400000); 

    if(remainder == age) { 
     throw new InvalidArgumentException("The number of days required exceeds the age of the database entry. Handle this properly."); 
    } 

    // Turn the remainder in milliseconds into minutes and return it 
    return remainder/60000; 
} 
+0

ありがとう!そのようなアプリケーションにSystem.currentTimeMillis()またはCalendar関数を使用する方が良いでしょうか? – Rujul

+0

あなたの必要性によって異なります。 'System.currentTimeMillis()'は_UTC_ TimeZoneを使って(あなたのデバイスで設定された)現在の時刻をとります。これは設定できません。ほとんどの場合、これは問題ありません。 「カレンダー」では、一定の時間を追加したり、異なるタイムゾーンを適用したりすることができます。 – Knossos

+0

これが助けになるなら問題ありません。投票を忘れずにグリーンティックであなたの答えを選択してください。 – Knossos

関連する問題