web-dev-qa-db-ja.com

Javaで "unixtime"を取得する

Date.getTime()は1970年1月1日からのミリ秒を返します。Unixtimeは1970年1月1日からの秒数です。私は通常Javaでコーディングしませんが、いくつかのバグ修正を行っています。私は持っています:

Date now = new Date();      
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();

Javaでunixtimeを取得するためのより良い方法はありますか?

更新

John Mの提案に基づいて、私は次のようになりました。

return (int) (System.currentTimeMillis() / 1000L);
242
Gary Richardson

System.currentTimeMillis() でDateオブジェクトを作成しないでください。 1000で割るとUnix Epochができます。

コメントで述べたように、unixTime変数の型には、ボックス化されたオブジェクトのlong(大文字のL)ではなく、プリミティブのlong(小文字のl)が必要です。

long unixTime = System.currentTimeMillis() / 1000L;
444
John M

Java 8では、日付と時刻を処理するための新しいAPIが追加されました。 Java 8ではあなたが使うことができます

import Java.time.Instant
...
long unixTimestamp = Instant.now().getEpochSecond();

Instant.now()は、現在のシステム時刻を表す Instant を返します。 getEpochSecond()では、InstantからEpoch秒(unix time)を取得します。

242
micha