9

long getMillis(Date aDate);のような関数が必要です。

日付秒のミリ秒を返します。gwtコードであるため、Yoda、SimpleDateFormat、またはその他のライブラリを使用できません。

私の現在の解決策はdate.getTime() % 1000

もっと良い方法はありますか?

4

3 に答える 3

6

Peter Lawreyが指摘したように、一般的には次のようなものが必要です。

int n = (int) (date.getTime() % 1000);
return n<0 ? n+1000 : n;

%Javaでは「奇妙な」方法で動作するためです。時々否定的な結果を得るのではなく、常に結果が特定の範囲(ここでは0..999)に収まる必要があるため、私はそれを奇妙と呼んでいます。残念ながら、ほとんどのCPUとほとんどの言語でこのように機能するため、これに対応する必要があります。

于 2011-01-20T11:17:49.673 に答える
3

上記を試してみて、1000の長さのmodを使用するまで、予期しない動作が発生しました。

int n = (int) (date.getTime() % 1000l);
return n<0 ? n+1000 : n;
于 2011-10-05T16:52:19.273 に答える
1

tl; dr

aDate.toInstant()
     .toEpochMilli()

java.time

最新のアプローチでは、java.timeクラスを使用します。これらは、などの厄介な古いレガシークラスに取って代わりますjava.util.Date

Instant instant = Instant.now();  // Capture current moment in UTC.

のエポックからのミリ秒数を抽出します1970-01-01T00:00:00Z

long millis = instant.toEpochMilli() ;

変換

オブジェクトが渡された場合はjava.util.Date、java.timeに変換します。古いクラスに追加された新しいメソッドを呼び出します。

Instant instant = myJavaUtilDate.toInstant() ;
long millis = instant.toEpochMilli() ;
于 2017-09-02T18:30:34.280 に答える