2012-06-14 21 views
13

私はアマゾンクラウドからのメッセージを保存し、ソートされたマップにタイムスタンプでそれらを並べます。Javaの日付からミリ秒

私は、次のコードを使用してクラウドからタイムスタンプを解析しています:

Date timestamp = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS'Z'", Locale.ENGLISH).parse(time); 

、その後、私はキーが日付であることと、ソートマップでそれらに格納しています。 問題は、日付が秒精度にしかならないということです。 私は1秒間に複数のメッセージを送ることができるので、ミリ秒の精度で注文する必要があります。これを可能にするデータ構造はありますか?

+3

私たちに 'time'の値を教えてください。 – adarshr

+1

あなたの書式に 'SSS'と書かれていますので、millisはそこにある必要があります –

+0

' time'にUTCタイムゾーン( 'Z')が含まれている場合、' yyyy-MMの代わりに 'yyyy-MM-dd'T'hh:mm:ss.SSSZ' -dd'T'hh:mm:ss.SSS'Z''。 'Z 'は' + 0100'と同様に '' Z'をつかみます。 –

答えて

20

ソースの解像度が1秒より高い場合は、パターンのように見えますが、入力例は表示されていません。

Dateは、1970年1月1日からlongミリ秒の周りの単なるラッパーです。だからあなたはすでにそれを持っています。 Date.getTime()はそれをミリ秒の精度で返します。

なぜ、日付に1秒の精度しかないと思いますか? Date.compareTo(Date anotherDate)はミリ秒単位で比較します。 何か変なことをしない限り、SortedMapは正常に動作するはずです。

+0

私はミリ秒を得ることができなかったし、設定することができなかったと思った。しかし、あなたは正しいです。ありがとうございました。エラーは、私が入ってきたレートでメッセージを消費していたという事実から来ていました。これは、時間が適切に使われていなかったことを意味しました。キューから消費されて350ミリ秒待って修正しました。 –

1

これを実行したかどうかはわかりませんが、独自のコンパレータを作成して使用することはできます。

参考資料として、ご使用のアプリケーションの設定によっては、SimpleDateFormatの使用方法に注意が必要な場合がありますが、いくつかの問題があります。

関連する問題