Estoy buscando la mejor manera de agregar milisegundos a una Fecha Java cuando milisegundos se almacenan como 'largos'. El calendario Java tiene una función add, pero solo toma un 'int' como la cantidad.Agregar milisegundos a la fecha de Java, cuando milisegundos es largo
Esta es una solución que propongo ...
Calendar now = Calendar.getInstance();
Calendar timeout = Calendar.getInstance();
timeout.setTime(token.getCreatedOn());
timeout.setTimeInMillis(timeout.getTimeInMillis() + token.getExpiresIn());
¿Alguna otra sugerencia?
Estaba usando calendar.getInstance() para algunas implementaciones, pero tuve que abandonarlo porque si la Fecha viene con TimeZones, el calendario la romperá. – will824
@ will824: No entiendo nada su comentario: 'Fecha' * nunca * tiene una zona horaria asociada. Es * siempre * solo un número de milisegundos desde la época de Unix. –
@Jon En realidad, debe ser como dices, pero si marcas el objeto Date, siempre lleva consigo algún tipo de zona horaria. Parece que Java ha tenido muchos problemas con la manipulación de fechas (por eso nació Joda) y esta es una de ellas. Esa es exactamente la razón por la que no pude usar los calendarios para solucionar mi problema, sino que tuve que resolver la manipulación de Joda millis.Por supuesto, mi problema era muy específico y estaba relacionado con el total de segundos transcurridos desde 1/1/1970 que debería haber sido 0 pero recibí un número negativo debido a la zona horaria. Usar calendarios disminuiría 1 hora en mi caso :( – will824