yyyy toisostring español ddthh java datetime

java - toisostring - ¿Cómo puedo convertir una marca de tiempo desde el formato aaaa-MM-ddThh: mm: ss: SSSZ al formato MM/dd/aaaa hh: mm: ss.SSS? De ISO8601 a UTC



toisostring timezone (6)

En primer lugar, debe tener en cuenta que UTC no es un formato, es una zona horaria, efectivamente. Por lo tanto, "convertir de ISO8601 a UTC" no tiene sentido como concepto.

Sin embargo, aquí hay un programa de ejemplo que usa Joda Time que analiza el texto en un DateTime y luego lo formatea. He adivinado en un formato que tal vez desee utilizar: realmente no ha proporcionado suficiente información sobre lo que está tratando de hacer para decir algo más que eso. También es posible que desee considerar las zonas horarias ... ¿desea mostrar la hora local en el instante especificado? Si es así, deberá calcular la zona horaria del usuario y realizar la conversión de forma adecuada.

import org.joda.time.*; import org.joda.time.format.*; public class Test { public static void main(String[] args) { String text = "2011-03-10T11:54:30.207Z"; DateTimeFormatter parser = ISODateTimeFormat.dateTime(); DateTime dt = parser.parseDateTime(text); DateTimeFormatter formatter = DateTimeFormat.mediumDateTime(); System.out.println(formatter.print(dt)); } }

Quiero convertir la marca de tiempo 2011-03-10T11: 54: 30.207Z al 10/03/2011 11: 54: 30.207. ¿Cómo puedo hacer esto? Quiero convertir el formato ISO8601 a UTC y luego ese UTC debe ser consciente de la ubicación. Por favor ayuda

String str_date="2011-03-10T11:54:30.207Z"; DateFormat formatter ; Date date ; formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS"); date = (Date)formatter.parse(str_date); System.out.println("output: " +date );

Excepción: java.text.ParseException: fecha no analizable: "2011-03-10T11: 54: 30.207Z"


Es posible que desee echar un vistazo a la hora de joda , que es un poco más fácil de usar que las herramientas de fecha nativas de Java, y proporciona muchos patrones de fecha comunes preconstruidos.

En respuesta a los comentarios, más detalles:

Para hacer esto usando el tiempo de Joda, necesita dos DateTimeFormatters : uno para el formato de entrada para analizar su entrada y otro para el formato de salida para imprimir su salida. Su formato de entrada es un formato estándar ISO, por lo que la clase ISODateTimeFormat de Joda time ya tiene un método estático con un analizador: dateHourMinuteSecondMillis . Su formato de salida no es uno para el que tienen un formateador pre-construido, por lo que tendrá que crear uno usando DateTimeFormat . Creo que DateTimeFormat.forPattern("mm/dd/yyyy kk:mm:ss.SSS"); debe hacer el truco Una vez que tenga sus dos formateadores, llame al método parseDateTime() en el formato de entrada y al método de print en el formato de salida para obtener el resultado, como una cadena.

Ponerlo en conjunto debería verse como esto (advertencia, sin probar):

DateTimeFormatter input = ISODateTimeFormat.dateHourMinuteSecondMillis(); DateTimeFormatter output = DateTimeFormat.forPattern("mm/dd/yyyy kk:mm:ss.SSS"); String outputFormat = output.print( input.parseDate(inputFormat) );


Espero que esto ayude:

public String getSystemTimeInBelowFormat() { String timestamp = new SimpleDateFormat("yyyy-mm-dd ''T'' HH:MM:SS.mmm-HH:SS").format(new Date()); return timestamp; }


Ingrese la fecha original en un objeto Date y luego imprima el resultado con un DateFormat . Es posible que deba dividir la cadena en partes más pequeñas para crear el objeto Date inicial, si el método de análisis automático no acepta su formato.

Pseudocódigo

Date inputDate = convertYourInputIntoADateInWhateverWayYouPrefer(inputString); DateFormat outputFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss.SSS"); String outputString = outputFormat.format(inputDate);


Sí. Puedes usar SimpleDateFormat como este.

SimpleDateFormat formatter, FORMATTER; formatter = new SimpleDateFormat("yyyy-MM-dd''T''HH:mm:ss.SSS''Z''"); String oldDate = "2011-03-10T11:54:30.207Z"; Date date = formatter.parse(oldDate.substring(0, 24)); FORMATTER = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss.SSS"); System.out.println("OldDate-->"+oldDate); System.out.println("NewDate-->"+FORMATTER.format(date));

Salida OldDate -> 2011-03-10T11: 54: 30.207Z NewDate -> 10-Mar-2011 11: 54: 30.207


Utilice DateFormat . (Lo siento, pero la brevedad de la pregunta no garantiza una respuesta más larga o más detallada).