2

私は、時間間隔を hh:mm でキャプチャするプロジェクトに取り組んでいます。btnTimeOut と btnTimeIn という名前の 2 つのボタンがあり、どちらもクリックするとシステム時間をキャプチャします。要件は、hh:mm などで btnTimeOut と btnTime の間の間隔を取得することです。12:30 - 10:00 = 02:30 (hh:mm)。

現在、間隔に次のコードを使用しましたが、分などとして返されます.12:30 - 10:00 = 150分。

  String timeOut = lblTimeOut.getText();
  String timeIn = lblTimeIn2.getText();

  SimpleDateFormat format = new SimpleDateFormat("hh:mm");

  Date d1 = null;
  Date d2 = null;

  try {
      d1 = format.parse(timeOut);
      d2 = format.parse(timeIn);
  } 
  catch (Exception e){
      e.printStackTrace();
  }

  long diff = d2.getTime() - d1.getTime();
  long diffMinutes = diff / (60 * 1000);         
  long diffHours = diff / (60 * 60 * 1000);  

  lblSurface.setText(String.valueOf(diffMinutes)); 

フォームで期間を取得する方法はhh:mm?

Joda 時刻を使用し、Invalid format: "12:19" is malformed at ":19" で戻りました。表示時間をトリガーする他のボタンについては。

DateFormat timeFormat = new SimpleDateFormat("hh:mm");
Date date = new Date();  
String time = timeFormat.format(date);  
lblTimeIn2.setText(time);

Timer timer = new Timer(1000, timerListener);  
    // to make sure it doesn't wait one second at the start  
timer.setInitialDelay(0);  
timer.start();   
}         

何が悪いのかわかりません。他のラベルの時間を表示するために joda time を使用する必要がありますか?

4

3 に答える 3

2

分を取得する場合は、時間も含まれます。分を単純に割って60時間を取得し、以下のように除算の余りの値で分を更新します。

    long diffMinutes = diff / (60 * 1000);  //difference in minutes       
    long diffHours = (long) diffMinutes/60; //get hours from diff minutes
    diffMinutes  = diffMinutes % 60; //remainder of minutes after converting hours

最後に、テキストに時間と分を設定します。

     lblSurface.setText(diffHours + ":" + diffMinutes);

の間に が追加されているので":"、暗黙の変換のために問題ないはずです。

于 2012-11-11T05:49:28.837 に答える
2
String.format("%1d:%2d", mins/60, (mins%60))

例えば

public class HoursMinutesFormat {

    public static void main(String[] args) {
        int mins = 150;
        System.out.println(String.format("%1d:%2d", mins/60, (mins%60)));
    }
}

出力

2:30
于 2012-11-11T05:57:26.013 に答える