3

私はしばしば時間を操作する必要があります。Calendar クラスは日付と時刻の操作に適していますが、時間、分、秒などの要素を何らかの構造に格納する簡単な方法を見つけることができないようです。文字列から実際の int への多くの変換が必要なようです。私はいつでも独自のクラスを作成し、要素をフィールドに保存することができますが、より多くの機能 (時間の追加など) を提供し、保存とアクセスをシンプルに保つクラスが存在する場合は、より良いでしょう。私はこのようなものを探しています:

Time time = new Time();
time.parse("13:30:15");
t.Hour = 13;
t.Minute = 30;
t.Second = 15;

このような単純なことを行う Java クラスは存在しますか。これが私が今それを行う方法です。時間と分を解析するためだけに、なんと恐ろしい量のコードになります。

String time = "17:30";

TimeInfo timeInfo = new TimeInfo();
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
Date d = df.parse(time);

Calendar calendar = Calendar.getInstance();
calendar.setTime(d);

timeInfo.Hours = calendar.get(Calendar.HOUR_OF_DAY);
timeInfo.Minutes = calendar.get(Calendar.MINUTE);
timeInfo.Seconds = calendar.get(Calendar.SECOND);

class TimeInfo
{
  public int Hours;
  public int Minutes;
  public int Seconds;
  public boolean Is24HourFormat;
}
4

4 に答える 4

3

JodaTimeは、時間を簡単に操作できる外部ライブラリの 1 つです。時間を追加できます。また、時間の違いを見つけます。

また、 jodatime lib の概念であるintervalとの違いを確認することもできます。durationソポスト

詳細については、javadoc を参照してください

于 2013-02-20T12:18:22.617 に答える
2

このアプローチを試してください

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,17);
cal.set(Calendar.MINUTE,30);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);

Date d = cal.getTime();
SimpleDateFormat f =new SimpleDateFormat("hh:mm:ss aa");
System.out.println(f.format(d));
于 2013-02-20T12:22:21.120 に答える
1

必要なものはすべて揃っていると思いjava.util.Calendarます。Calendar#set()を見てください。

public final void set(int year, int month, int date, int hourOfDay, int minutes, int second)

YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE、および SECOND フィールドの値を設定します。他のフィールドの以前の値は保持されます。これが望ましくない場合は、最初に clear() を呼び出します。

于 2013-02-20T12:14:24.923 に答える
0

Commons Lang の DateUtils を使用したいと思います。これは、Calendar および DateFormat(SimpleDateFormat) とともに、Java のすべての日付要件を満たす必要があります。

于 2013-02-20T12:45:40.473 に答える