質問

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() ;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top