getMilliseConds()Java日付から
-
13-10-2019 - |
質問
long getmillis(date adate)のような関数が必要です。
これにより、日付のミリ秒が2番目に戻ります。 GWTコードであるため、Yoda、SimpledateFormat、またはその他のライブラリを使用することはできません。
私の現在の解決策はやっています date.getTime() % 1000
より良い方法はありますか?
解決
ピーター・ローリーが指摘したように、一般的にあなたは次のようなものが必要です
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;
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() ;
変換
あなたが渡された場合a java.util.Date
オブジェクト、Java.Timeに変換します。古いクラスに追加された新しい方法を呼び出します。
Instant instant = myJavaUtilDate.toInstant() ;
long millis = instant.toEpochMilli() ;
所属していません StackOverflow