web-dev-qa-db-fra.com

Comment obtenir correctement la date et l'heure actuelles dans Joda-Time?

Comment obtenir correctement la date et l'heure réelles dans Joda Time? Par correctement, je veux dire le temps dans mon pays. J'ai lu des pages officielles et quelques tutoriels - il y a beaucoup de choses sur les paramètres régionaux et les fuseaux horaires, mais j'ai trouvé cela assez déroutant. Je n'ai trouvé aucun exemple pour l'obtenir simplement.

J'en ai besoin pour deux choses:

  1. Pour vous mettre à jour pour un poste en diffusion,
  2. Pour obtenir l'heure actuelle que je vais "comparer" avec la date de naissance et calculer l'âge.

Comment puis-je régler l'heure actuelle lorsque j'ai UTC + 1 (Prague - République tchèque)?

33
user1097772

Voici un pseudo code pour Joda Time qui pourrait vous être 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());
    }
}

Lien pour le formateur DateTimeFormat

API Joda Time

J'espère que cela t'aidera. Si vous avez des questions, faites-le moi savoir.

P.S .: Merci à Sumit Arora d'avoir donné la sortie.

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
46
Smit
LocalTime localTime = new LocalTime();
LocalDate localDate = new LocalDate();
DateTime dateTime = new DateTime();
LocalDateTime localDateTime = new LocalDateTime();  

l'un de ces constructeurs crée la date dans votre fuseau horaire, où votre fuseau horaire signifie le fuseau horaire DateTimeZone.getDefault();

Vous voulez comparer la date actuelle avec la date de naissance. Comment enregistrez-vous la date de dirth dans la base de données?
Si c'est avec le fuseau horaire UTC, vous pouvez comparer avec dateTime en UTC TZ

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

S'il a un serveur TZ, vous devriez le faire

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

S'il a un serveur TZ, vous devriez le faire

Years.yearsBetween(dateOfBirth, new DateTime(DateTimeZone.forID("ClientTZ")));  
5
Ilya