long getMillis(Date aDate);のような関数が必要です。
日付秒のミリ秒を返します。gwtコードであるため、Yoda、SimpleDateFormat、またはその他のライブラリを使用できません。
私の現在の解決策はdate.getTime() % 1000
もっと良い方法はありますか?
long getMillis(Date aDate);のような関数が必要です。
日付秒のミリ秒を返します。gwtコードであるため、Yoda、SimpleDateFormat、またはその他のライブラリを使用できません。
私の現在の解決策はdate.getTime() % 1000
もっと良い方法はありますか?
Peter Lawreyが指摘したように、一般的には次のようなものが必要です。
int n = (int) (date.getTime() % 1000);
return n<0 ? n+1000 : n;
%
Javaでは「奇妙な」方法で動作するためです。時々否定的な結果を得るのではなく、常に結果が特定の範囲(ここでは0..999)に収まる必要があるため、私はそれを奇妙と呼んでいます。残念ながら、ほとんどのCPUとほとんどの言語でこのように機能するため、これに対応する必要があります。
上記を試してみて、1000の長さのmodを使用するまで、予期しない動作が発生しました。
int n = (int) (date.getTime() % 1000l);
return n<0 ? n+1000 : n;
aDate.toInstant()
.toEpochMilli()
最新のアプローチでは、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() ;