2016-07-09 29 views
1

私は2倍の差を計算しようとしています。 2つの日付が真夜中の両側にない限り、うまくいきます。 その場合、私は否定的な答えを得ます。 この問題を解決するコードをどのように改善できますか?2日間の時間差を計算する

String sleepStart = editFallAsleepTime.getText().toString(); 
       String sleepStop = editWakeUpTime.getText().toString(); 
       String awakeTimeString = ((Globals) getActivity().getApplication()).getAwakeTime(); 

//HH converts hour in 24 hours format (0-23), day calculation 
       SimpleDateFormat format = new SimpleDateFormat("HH:mm"); 

       Date d1 = null; 
       Date d2 = null; 

       try 
      { 
       d1 = format.parse(sleepStart); 
       d2 = format.parse(sleepStop); 

       float t1 = d1.getTime(); 
       float t2 = d2.getTime(); 

       if(t2 <= t1){ 
        t2 +=24; 
       } 

       float diff = t2 - t1; 

       //in milliseconds 
        float diff = d2.getTime() - d1.getTime(); 
        float diffHours = diff/(60 * 60 * 1000); 
        float awakeTime = Float.valueOf(awakeTimeString); 
        float awakeHours = awakeTime/60; 
        float calcEffectiveSleep = diffHours - awakeHours; 
        String sleepTime = Float.toString(diffHours); 
        String effectiveSleep = Float.toString(calcEffectiveSleep); 
        ((Globals) getActivity().getApplication()).setEffectiveSleep(effectiveSleep); 
       } 
       catch (Exception e) 
       { 
        Log.e("timediff","didntwork"); 
       } 
+0

ルック:http://stackoverflow.com/questions/1555262/calculating-the-difference-between-two-java-date-instancesあなただけで作業している – alzee

+0

時間。だから両方の時間が同じ日であると仮定していますか?そして、あなたの問題は、<終了時にのみ発生しますか? –

+0

いいえ、私は両方の時間が同じ日であると仮定していません。私は23.59の前に初めてであれば、そうでないと仮定しなければなりません。何とかそこに日付を入れなければなりませんか? –

答えて

1

@Andre Classenのが言ったように1日の下であなたの違いは、間隔、あなたはD2 < D1のケースを扱う考えることができます。どのように行うことです。ここでの回答で

t1 = d1.getTime(); 
t2 = d2.getTime(); 

if(t2 <= t1){ 
    t2 +=24*60*60*1000; 
} 

diff = t2 - t1; 
+0

これを試したが、うまくいかなかった。たぶん私は間違ってそれを入れた?私はこれが解決策でなければならないことに同意します、私はたぶんそれが間違っていました..上記のコードを編集して、私がどのように実装したかを示してください。 –

+0

すべてを編集して混在させました。フォーマット2、就寝時間、getUptime、d3、d4とは何ですかdiff2をどこで印刷しますか?編集されたコードでは明確ではありません。どのようなエラーが出るのか、どの値を試したのか、どのような出力が得られるのかを入れた方が良いでしょう。 – uguboz

+0

申し訳ありませんが、私は間違った部分をコピーし、それを見ずに貼り付けました。今すぐ私はいくつかの異なる数字のためにこれを行います、なぜそれが間違っているのですか。今はずだ。私は少し疲れていると思う.. –

関連する問題