Estoy tratando con algo muy similar a lo que se ha pedido aquí – comparar Joda de tiempo de Tiempo de las zonas de pero no parece funcionar para mí.

He aquí un fragmento de código que estoy probando Joda-El Tiempo DateTime con –

 DateTime estDT = new DateTime(DateTimeZone.forID("America/Puerto_Rico")).withMillisOfSecond(0); 
 DateTime londonDT = new DateTime(DateTimeZone.forID("Europe/London")).withMillisOfSecond(0);

    System.out.println("Comparison " + londonDT.isBefore(estDT)); 
    System.out.println("Comparison " + londonDT.isAfter(estDT)); 

Curiosamente, me sale ‘false’ tanto de la sysout las declaraciones anteriores. Puede alguien por favor explique lo que va a ser la forma correcta de hacer esta comparación?

InformationsquelleAutor FSP | 2013-06-18

2 Comentarios

  1. 18

    Estás creando dos DateTime instancias que representa probablemente el mismo instante en el tiempo, pero con diferentes zonas horarias. Tampoco es antes o después de los otros.

    La zona horaria sólo afecta a la forma de la fecha/hora de métodos como la getHourOfDay() convertir el instante en el tiempo.

    • Técnicamente, londonDT representa un momento después estDT como puntos en la línea de tiempo del Universo. Dos líneas separadas de código significa separar los dos muestreos de el reloj del equipo, por lo que la línea 2 que ocurrió después de la 1ª. DateTime tiene una resolución de milisegundos, por lo que si tanto las líneas de código que pasó a ejecutar dentro de la misma milésimas de segundos del reloj del ordenador, a continuación, que sería igual a la una de la otra. Esto es pura posibilidad (suerte). Dependiendo de si el thread de Java se retrasa/suspendida en su ejecución, o si se ejecuta en un equipo más lento, los dos DateTimes podrían haber sido diferentes.
    • Los dos estábamos un poco demasiado fuerte. Los dos probablemente representan el mismo instante en el tiempo, dado que las llamadas a withMillisOfSecond(0). Sin embargo, ellos podrían diferir, si que le pasó a ejecutar en diferentes segundos (por ejemplo, millis=999 y millis=0). Si el mismo instante de tiempo, fueron en realidad deseada, la withZone() método sería más fiable que llegar el instante en que dos veces. Sin embargo, es más probable que el OP quiere dos instancias diferentes en el tiempo, proporciona como entrada.
  2. 53

    isAfter y isBefore métodos de comparar fechas por millis (haciendo caso omiso de la zona horaria).

    En tu ejemplo, que las fechas han igualdad de millis.

    System.out.println(londonDT.getMillis() == estDT.getMillis());  

    imprimirá true.

    Expresiones

    londonDT.isBefore(estDT) 
    londonDT.isAfter(estDT)

    son iguales a

    londonDT.getMillis() < estDT.getMillis()  
    londonDT.getMillis() > estDT.getMillis()

Dejar respuesta

Please enter your comment!
Please enter your name here