2

java se / java eeに任意の「時間解決」を表す組み込みクラスはありますか?たとえば、1時間ごと、1秒ごと、10分ごとなど。

4

4 に答える 4

8

java.util.concurrent.TimeUnit列挙型を見てください。ここからユニットを使用できます。

車輪の再発明をしないでください。

より複雑な時間操作については、Joda時間ライブラリをお勧めします。

于 2012-09-15T15:22:55.713 に答える
2

あなたはいつでも時間の解像度を下げることができます例えば

long millis = System.currentTimeMillis();
long seconds = millis / 1000;
long minutes = seconds / 60;
long hours = minutes / 60;

したがって、30分ごとに使用したい場合は、

long halfHour = System.currentTimeMillis() / (30 * 60 * 1000L)
于 2012-09-15T15:18:31.740 に答える
0

粒度単位

時間対分対秒など、特定の粒度の時間を単に示す方法を意味する場合、Kremserによって受け入れられた回答は正しいです。TimeUnit列挙型はまさにこれです。ただし、Javaに組み込まれている別の選択肢もあります。

ChronoUnit

Java 8以降には、の値のリストが類似していますがjava.time.temporal.ChronoUnit、7の値のリストが長いことに注意してTimeUnitください。

  • 永遠に
  • ERAS
  • ミレニアム
  • 世紀
  • 数十年
  • 日々
  • HALF_DAYS
  • 時間
  • ミリス
  • MICROS
  • ナノス

両方の列挙型、TimeUnitChronoUnit、は便利です。単位間の変換はTimeUnit、さまざまな方法で提供されます。そのメソッドChronoUnitで経過時間を計算します。between

時計の増分

時計を特定の増分で刻々と変化させたい場合、Clockクラスは代替の実装を提供します。

Clockデフォルトのクロックの代わりに使用するために、多くのjava.timeクラスでオプションの引数として代替実装オブジェクトを渡します。

値を切り捨てる

日時の値があり、それを切り捨てて小さいフィールドをゼロにドロップする場合は、を確認してtruncatedToください。TemporalUnitで見つかった実装を使用して、インターフェイスで粒度を指定しますChronoUnit

たとえば、現在の瞬間を取得し、秒の小数部と秒を削除して、分単位の値を取得します。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime now = ZonedDateTime.now( zoneId );
ZonedDateTime nowWholeMinutes = now.truncatedTo( ChronoUnit.MINUTES );
于 2016-07-15T22:49:36.993 に答える
-1

整数除算を使用します。その単純な例は次のとおりです。

long millis = System.currentTimeMillis();

現在の時刻がミリ秒単位で表示されます。値がミリ秒ごとresolution(たとえば、1000ミリ秒ごと)だけ変化する時間を必要とする場合は、整数除算を使用できます。

long resolution = 1000;
long result = millis / resolution * resolution

ミリ秒を結果で割ると、この例では秒になります。とは両方とも整数変数/であるため、整数除算を行います。それはと同じになります。ここでを掛けると、新しい解像度の単位に達した場合にのみ結果が変わります。millisresolutionMath.floor(((float)millis) / ((float) resolution)))resolution

例:新しい5 Minutesブロックに到達した場合にのみ時刻が変更される時計が必要であると仮定すると、ブロックはたとえば0〜4分、5〜9分、10〜15分などになります。5分は1000ミリ秒です。 /秒*60秒/分*5分=300000ミリ秒。したがって、を設定するとresolution = 300000result5分ブロックごとに1回だけ変更されます。ミリス=0-299999の場合、結果=0。ミリス=300000-599999、結果=5などの場合。あなたは私が推測する考えを得る。

于 2012-09-15T15:40:50.857 に答える