2011-11-10 10 views
2

2つの時間オブジェクトを追加/減算する方法を教えてください。私は「yyyy/MMM/dd HH:mm:ss」の形式で2つの時間オブジェクト(到着と出発)を持っています。私は出発と到着時間の差を印刷する必要があります。私は以下の時間広告を生成しています:時間とカレンダー

public String getTime() { 
    Calendar currentDate = Calendar.getInstance(); 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss"); 
    return formatter.format(currentDate.getTime()); 
} 

印刷に時間がかかることがあります。

+0

2つの日付(ミリ秒単位)の間の(ミリ秒ではない)持続時間を得ることは自明ではありません。これは年と時間帯の時間に依存します(これは、サマータイム)。関連するコードは、年/月/日/などを把握する必要があります。 _both_日付の場合は、_those_数字を処理します。 –

答えて

2

何か.....

public long getTimeDiff() throws Exception { 
    String arrival = "2011/Nov/10 13:15:24"; 
    String departure = "2011/Jan/10 13:15:24"; 

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss"); 

    java.util.Date date1 = formatter.parse(arrival); 
    java.util.Date date2 = formatter.parse(departure); 

    return date2.getTime() - date1.getTime(); 
} 
4

Joda Timeライブラリーをご覧ください。

あなたは簡単に引くと日時を追加し、簡単に間隔を見つけることができます。

// interval from start to end 
DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0); 
DateTime end = new DateTime(2005, 1, 1, 0, 0, 0, 0); 
Interval interval = new Interval(start, end); 
0

あなたはgetTimeメソッドを使用して、両方のカレンダーのミリ秒単位の時間を得ることができます。減算の結果を必要に応じて測定単位に変換できます。あなたがJodaの図書館を見ているときに真剣に時間と時間を使って作業するつもりなら、

Upd。 getTimeを2回呼び出す必要があります。最初に返されるオブジェクトはDateです。DateのgetTimeを呼び出すと、長い値を取得します。

0

2つの時刻/日付オブジェクトをミリ秒単位で変換します。それから私はそれらを引く(私たちはロングを扱っている)。

私は結果の長い値からDateオブジェクトを作成します。その後、Calendar.setDate(Date)を使ってCalendarを構築することができます。

よろしくお願いいたします。

1

日付に変換してからlongにして引く、それはミリ秒単位の時間差、このような

Date d1 = DateFormat.parse(time1); 
Date d2 = DateFormat.parse(time2); 
long diffInMilliSeconds = d1.getTime()-d2.getTime(); 
0

はい、スタートを与えるだろうあなたの日付でgetTime()を使用してミリ秒(またはあなたのカレンダーの場合はgetTimeInMillis())に変換してください。それはあなたが引くことができる長い値を与えます。それは簡単な部分です。

次に、これらのミリ秒を読み込み可能な形式に変換することができます。しかし、おそらくパッケージ化されたライブラリを使ってそれを行うのが理にかなっています。

これらのタイプの日付計算には、Jodaライブラリのような人がいます。私はCommons Langがすばらしいとわかります。 DateUtilsを提供しています。日付を最も近い分や時間などに四捨五入や切り捨てなどの計算を実行する場合に便利です。DurationFormatUtilsクラスは、formatDurationHMSのような形式になります素敵な時間:分:秒表示とformatDurationWordsをテキスト(派手!)や他の同様の機能を使ってミリ秒単位で人間が読める形式に簡単にフォーマットできます。

関連する問題