web-dev-qa-db-fra.com

JodaTime DateTime, format de date ISO8601 GMT

Comment puis-je obtenir le format suivant:

2015-01-31T00:00:00Z

(Format de date ISO8601 GMT)

Vous sortez d'un objet DateTime en temps joda (Java)? Par exemple.

DateTime time = DateTime.now();
String str = // Get something like 2012-02-07T00:00:00Z

Merci! :)

25
Petter Kjelkenes

Le JODA Javadoc indique que toString pour DateTime renvoie la date en ISO8601. Si vous devez réinitialiser tous les champs horaires, procédez comme suit:

final DateTime today = new DateTime().withTime(0, 0, 0, 0);
System.out.println(today);

Cela inclura des millisecondes dans la chaîne de sortie. Pour vous en débarrasser, vous devez utiliser le formateur que @jgm suggère ici.

Si vous voulez qu'il corresponde au format que vous demandez dans cet article (avec le caractère littéral Z) cela fonctionnerait:

System.out.println(today.toString(DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'")));

Si vous avez besoin que la valeur soit UTC, initialisez-la comme ceci:

final DateTime today = new DateTime().withZone(DateTimeZone.UTC).withTime(0, 0, 0, 0);
41
laz

@jgm Dans le document, ISODateTimeFormat.dateTime() est décrite

Renvoie un formateur qui combine une date et une heure complètes, séparées par un "T" (aaaa-MM-jj'T'HH: mm: ss.SSSZZ).

mais si vous définissez le fuseau horaire, par exemple,

DateTimeFormatter fmt = ISODateTimeFormat.dateTime();  
System.out.println(fmt.print(new DateTime().toDateTime(DateTimeZone.UTC)));

il se terminera en Z.

8
okwap

utiliser ISODateTimeFormat

DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeNoMillis();
String str = fmt.print(dt);
3
mantrid

Configurer un DateTimeFormatter:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ");
formatter.print(time);
2
jgm