2013-01-15 10 views
22

Come ottenere correttamente la data e l'ora effettive in Joda Time? Con ciò intendo proprio il tempo nel mio paese. Leggo le pagine ufficiali e alcuni tutorial - ci sono molte cose su Locales e fusi orari ma ho trovato abbastanza confuso. Non ho trovato alcun esempio su come ottenerlo semplicemente.
Ho bisogno di due cose:
1) per ottenere corrente per post in discusion
2) per ottenere l'ora corrente che "confronterò" con la data di nascita e calcolerò l'età.
Come posso impostare l'ora corrente quando ho UTC + 1 (Praga - Repubblica Ceca)?
GrazieCome ottenere correttamente la data e l'ora correnti in Joda-Time?

+1

+1 per una domanda relativa alla data Java a cui non è possibile rispondere con "usa il tempo di Joda". – GargantuChet

+0

Hai dato un'occhiata all'API del joda time. [Collegamento API Joda Time] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTimeZone.html). Questo ti aiuterà a risolvere il tuo problema. – Smit

+0

Ciò consentirà anche di ordinare il problema che è stato già chiesto a SO. [Utilizzo del tempo di Joda per ottenere l'orario corrente per un determinato fuso orario] (http://stackoverflow.com/questions/9184499/using-joda-time-to-get-current-wall-time-for-a-given- fuso orario) – Smit

risposta

32

Ecco il codice pseudo per Joda Time che potrebbe esserti utile.

import org.joda.time.*; 
import org.joda.time.format.DateTimeFormat; 
import org.joda.time.format.DateTimeFormatter; 

public class JodaTimeExample { 

    public static void main(String[] sm) { 
     DateTimeFormatter dateFormat = DateTimeFormat 
       .forPattern("G,C,Y,x,w,e,E,Y,D,M,d,a,K,h,H,k,m,s,S,z,Z"); 

     String dob = "2002-01-15"; 
     LocalTime localTime = new LocalTime(); 
     LocalDate localDate = new LocalDate(); 
     DateTime dateTime = new DateTime(); 
     LocalDateTime localDateTime = new LocalDateTime(); 
     DateTimeZone dateTimeZone = DateTimeZone.getDefault(); 

     System.out 
       .println("dateFormatr : " + dateFormat.print(localDateTime)); 
     System.out.println("LocalTime : " + localTime.toString()); 
     System.out.println("localDate : " + localDate.toString()); 
     System.out.println("dateTime : " + dateTime.toString()); 
     System.out.println("localDateTime : " + localDateTime.toString()); 
     System.out.println("DateTimeZone : " + dateTimeZone.toString()); 
     System.out.println("Year Difference : " 
       + Years.yearsBetween(DateTime.parse(dob), dateTime).getYears()); 
     System.out.println("Month Difference : " 
       + Months.monthsBetween(DateTime.parse(dob), dateTime) 
         .getMonths()); 
    } 
} 

Link for DateTimeFormat formatter

Joda Time API

Spero che questo vi aiuterà. Se hai qualche domanda fammi sapere.

P.S .: Grazie a Sumit Arora per dare l'output.

dateFormatr : AD,20,2016,2016,26,2,Tue,2016,180,6,28,PM,8,8,20,20,25,20,2,‌​, 
LocalTime : 20:25:17.308 
localDate : 2016-06-28 
dateTime : 2016-06-28T20:25:18.872+05:30 
localDateTime : 2016-06-28T20:25:20.260 
DateTimeZone : Asia/Kolkata 
Year Difference : 14 
Month Difference : 173 
+2

Ehi amico, questo è un esempio fantastico e molto utile, che spiega come funziona. Complimenti e grazie mille :) – user1097772

+1

Vorrei che potessi anche mostrare l'output. –

+1

@ShajeelAfzal: Lo pseudo codice che ho fornito è autoesplicativo e può essere eseguito se si applicano file jar corretti. Ad ogni modo cercherò questo programma (se è ancora seduto da qualche parte) e cercherò di aggiornare la risposta con l'output. – Smit

4
LocalTime localTime = new LocalTime(); 
LocalDate localDate = new LocalDate(); 
DateTime dateTime = new DateTime(); 
LocalDateTime localDateTime = new LocalDateTime(); 

nulla di tutto questo crea contructor data nel tuo fuso orario, dove il fuso orario significa fuso orario DateTimeZone.getDefault();

Si vuole confrontare la data corrente con la data di nascita. Come si salva la data della sporcizia nel database?
Se è con fuso orario UTC, è possibile confrontare con dateTime in UTC TZ

Years.yearsBetween(dateOfBirth, new DateTime(DateTimeZone.UTC)); 

Se ha TZ Server si dovrebbe fare

Years.yearsBetween(dateOfBirth, new DateTime()); 

Se ha TZ Server si dovrebbe fare

Years.yearsBetween(dateOfBirth, new DateTime(DateTimeZone.forID("ClientTZ"))); 
+0

Grazie per la risposta :-) – user1097772

+0

"Se ha Server TZ dovresti fare" Mi dispiace, non capisco. Che cos'è Server TZ? –

+1

@NeonWarge È il fuso orario del server nell'applicazione client-server – Ilya

Problemi correlati