2012-06-14 21 views
13

Estoy almacenando mensajes de una nube de Amazon y ordenándolos por su marca de tiempo en un mapa ordenado.Fecha de Java a milisegundos

estoy analizando el sello de tiempo de la nube con el siguiente código:

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

y entonces estoy almacenando en ellos en un mapa Ordenado donde la clave es la fecha. El problema es que la fecha solo se reduce a segundos de precisión. Puedo enviar varios mensajes en 1 segundo, por lo que necesito que se ordenen con una precisión de milisegundos. ¿Hay una estructura de datos que lo permita?

+3

Muéstranos el valor de 'time'. – adarshr

+1

Su formato dice 'SSS' así que millis debe estar allí –

+0

Si' time' contiene la zona horaria UTC ('Z'), use' aaaa-MM-dd'T'hh: mm: ss.SSSZ' en lugar de 'aaaa-MM -dd'T'hh: mm: ss.SSS'Z''. 'Z' capturará *' Z' y también, por ejemplo, '+ 0100' –

Respuesta

20

Siempre y cuando su fuente tenga una resolución superior a 1 segundo. Se parece al patrón, pero no nos ha mostrado ningún ejemplo de entrada.

Date es solo un contenedor alrededor de long milisegundos desde 1970-01-01. Entonces ya lo tienes. Date.getTime() devolverá eso, con una precisión de milisegundos.

¿Por qué crees que la fecha solo tiene una precisión de un segundo? Date.compareTo(Date anotherDate) se compara en un nivel de milisegundos. Así que su SortedMap debería funcionar bien a menos que esté haciendo algo extraño.

+0

Pensé que no podía, ya que no podía obtener los milisegundos o configurarlos. Pero tienes razón. Gracias por eso. El error provenía del hecho de que estaba consumiendo mensajes a la velocidad a la que ingresaban. Esto significaba que el tiempo no se usaba correctamente. Se corrigió esperando 350 milisegundos y consumiendo desde la cola. –

1

No estoy seguro de haberlo hecho, pero puede crear su propio comparador y usarlo.

Como nota aparte, dependiendo de la configuración de sus aplicaciones, puede tener cuidado con cómo usa SimpleDateFormat, hay algunos problemas con él.

Cuestiones relacionadas