java - example - jodatime current time
Joda DateTime ISODateTimeFormat patrĂ³n (4)
No parece que puedas construir un formateador de este tipo únicamente a partir de un patrón. El documento DateTimeFormat dice:
* <strong>Zone</strong>: ''Z'' outputs offset without a colon, ''ZZ'' outputs
* the offset with a colon, ''ZZZ'' or more outputs the zone id.
Puede crear la mayoría del formateador a partir de un patrón y luego personalizar la salida de la zona horaria de esta manera:
DateTimeFormatter patternFormat = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd''T''HH:mm:ss.SSS")
.appendTimeZoneOffset("Z", true, 2, 4)
.toFormatter();
Los documentos de Joda ISODateTimeFormat dicen que ISODateTimeFormat.dateTime () devuelve un formateador para el patrón aaaa-MM-dd''T''HH: mm: ss.SSSZZ
Pero el formateador devuelve una "Z" en lugar de +00: 00 vea esto-
DateTime dt = DateTime.now(DateTimeZone.UTC);
DateTimeFormatter patternFormat = DateTimeFormat.forPattern("yyyy-MM-dd''T''HH:mm:ss.SSSZZ");
DateTimeFormatter isoFormat = ISODateTimeFormat.dateTime();
System.out.println(dt.toString(patternFormat)); //2014-06-01T03:02:13.552+00:00
System.out.println(dt.toString(isoFormat)); //2014-06-01T03:02:13.552Z
¿Alguien puede decirme cuál sería el patrón para obtener el +00: 00 para imprimir como una Z?
Edición: Solo para aclarar, sé que la ''Z'' es igual a +00: 00 pero textualmente es diferente. Lo que pregunto es qué patrón colocaría una Z como el desplazamiento de tiempo en lugar de +00: 00
(Disculpe si esto es demasiado trivial. Quería usar el formato ISO sin milisegundos y en el transcurso de escribir esta pregunta encontré exactamente lo que buscaba en ISODateTimeFormat.dateTimeNoMillis (), así que solo pregunto por intereses)
Aclamaciones
Si sabe que su Zona horaria siempre será DateTimeZone.UTC, entonces puede inyectar la Z en el patrón tal como el carácter T ha sido inyectado. Algo como esto:
DateTimeFormatter patternFormat = DateTimeFormat.forPattern("yyyy-MM-dd''T''HH:mm:ss.SSS''Z''");
Si desea tener el mismo formato pero sin los milisegundos, el patrón podría tener este aspecto:
DateTimeFormatter patternFormat = DateTimeFormat.forPattern("yyyy-MM-dd''T''HH:mm:ss''Z''");
Estoy seguro de que ha encontrado esta página, pero consulte la página de referencia de Joda Time Formatting para obtener detalles sobre estos formatos y otras opciones.
''Z''
es el corto plazo para el Zulu time
, que es lo mismo que GMT
o UTC
Creo que esto es lo que necesitas .. !!
int offset = DateTimeZone.forID("UTC").getOffset(new DateTime());
But the formatter returns a "Z" in place of +00:00 see this-
Ver doc otra vez, dijo claramente,
The time zone offset is ''Z'' for zero, and of the form ''±HH:mm'' for non-zero.
Entonces, este valor ISO 2014-06-01T03: 02: 13.552Z es el mismo que el 2014-06-01T03: 02: 13.552 + 00: 00 .
En su código para ver el caso distinto de cero, intente con
DateTime dt = DateTime.now(); //without arg DateTimeZone.UTC;