Ho a che fare con qualcosa di molto simile a quello che è stato chiesto qui - compare Joda-Time time zones ma non sembra funzionare per me.Confronto di due oggetti DateTime Joda-
Ecco un pezzo di codice che sto testando Joda-TimeDateTime 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));
Abbastanza interessante, ho 'false' da entrambe le dichiarazioni SYSOUT di cui sopra. Qualcuno può spiegare quale sarà il modo giusto di fare questo confronto?
Tecnicamente, londonDT rappresenta un momento dopo * * estDT come punti sulla timeline dell'universo. Due linee separate di codice indicano due campionamenti separati dell'orologio del computer, quindi la seconda riga è avvenuta dopo la prima. DateTime ha una risoluzione di millisecondi, quindi se entrambe le righe di codice dovessero essere eseguite entro lo stesso millesimo di secondo dell'orologio del computer, sarebbero uguali tra loro. Questa è pura fortuna (possibilità). A seconda se il thread Java è stato ritardato/sospeso durante l'esecuzione o se è stato eseguito su un computer più lento, questi due DateTimes potrebbero essere stati diversi. –
Eravamo entrambi un po 'troppo forti. I due * probabilmente * rappresentano lo stesso istante di tempo, date le chiamate a withMillisOfSecond (0). Tuttavia, potrebbero differire, se accadessero di eseguirsi in secondi diversi (ad es. Millis = 999 e millis = 0). Se lo stesso istante di tempo fosse effettivamente desiderato, il metodo withZone() sarebbe più affidabile di ottenere l'istante due volte. Tuttavia, è più probabile che l'OP desideri due istanze diverse nel tempo, fornite come input. –