¿Cómo convertir la fecha de Java en una string de fecha y hora XML?

Para definir una fecha y una hora, se utiliza el tipo de datos DateTime . DateTime se define en el formato » YYYY-MM-DDThh:mm:ss» donde:

  • AAAA indica el año
  • MM representa el mes
  • DD muestra el día
  • T indica el comienzo del segmento de tiempo necesario.
  • Hh determina la hora
  • mm representa el minuto
  • ss indica el segundo

Ejemplo: 2002-05-30T09:00:00

¿Qué son las zonas horarias en formato XML DateTime?

Para especificar una zona horaria, podemos ingresar un DateTime en hora UTC insertando una «Z» detrás de la hora,

Ejemplo: 

2002-05-30T09:30:10Z  

O podemos determinar un desplazamiento de la hora UTC agregando una hora positiva o negativa detrás de la hora,

Ejemplo:  

2002-05-30T09:30:10-06:00
2002-05-30T09:30:10+06:00

Por lo tanto, la zona horaria puede definirse como «Z» (UTC) o «(+|-)hh:mm». Las zonas horarias indefinidas se denominan «indeterminadas». El literal «Z» (zulú) se usa como indicador de zona horaria, lo que indica que la hora es UTC cuando se agrega al final de una hora.

¿Qué es la compensación de tiempo?

Una compensación de tiempo es una cantidad de tiempo que se suma o se resta de la hora universal coordinada (UTC) para obtener la hora actual de un lugar específico.

Enfoque para convertir Java Date a XML DateTime String:

  • Primero creamos un objeto de SimpleDateFormat . Esta clase analiza y formatea la fecha y la hora en Java.
  • Luego, creamos un StringBuffer que contendrá la string con formato XML.
  • Además, calculamos ZoneOffset. Determina una diferencia de zona horaria con respecto a la hora de Greenwich/UTC. Un desplazamiento de zona horaria es la cantidad de tiempo que una zona horaria difiere de Greenwich/UTC. Suele ser un número fijo de horas y minutos. Diferentes partes del mundo tienen diferentes compensaciones de zona horaria. Por ejemplo, India está 05:30 por delante de Greenwich/UTC.
  • Finalmente, combinamos toda la información requerida en una sola string, que es la string XML formateada.

Java

// Java program to Convert Java Date to XML DateTime String
 
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
public class GFG {
 
    public static void main(String[] args)
    {
 
        // formatting time
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat format2 = new SimpleDateFormat("HH:mm:ss");
       
        // create a StringBuffer(in order to use its append
        // functionality) to store the date in XML DateTime
        // format
        StringBuffer buff = new StringBuffer();
       
        // get the date of the system by creating an
        // instance of the Date class
        Date date = new Date();
       
        // append the formatted date(yyyy-MM-dd) in the
        // buffer
        buff.append(format1.format(date));
       
        // append T
        buff.append('T');
       
        // and finally append the formatted time(HH:mm:ss) in
        // buffer
        buff.append(format2.format(date));
 
        // calculating time zone
        // get the calendar instance in order to get the
        // time offset
        Calendar calendar = Calendar.getInstance();
       
        // The get(int field_value) method of Calendar class
        // is used to return the value of the given calendar
        // field in the parameter.
        int offset = calendar.get(calendar.ZONE_OFFSET)
                     / (1000 * 60);
       
        // add the sign(+/-) according to the value of the
        // offset
        if (offset < 0) {
            buff.append('-');
           
            // if the offset is negative make it positive by
            // multiplying it with -1, we will be using it
            //further
            offset *= -1;
        }
        else {
            buff.append('+');
        }
 
        // get the hour from the offset and store it in a
        // String
        String s1 = String.valueOf(offset / 60);
       
        // check if the retrieved hour is single digit or
        // two digit in case of single digit, add 0 before
        // the significant value
        for (int i = s1.length(); i < 2; i++) {
            buff.append('0');
        }
       
        // then finally append the s1 in our buffer
        buff.append(s1);
        buff.append(':');
 
        // now retrieve the minutes from offset, and
        // validate it in the same way as we did for the hour
        String s2 = String.valueOf(offset % 60);
       
        for (int i = s2.length(); i < 2; i++) {
            buff.append('0');
        }
       
        // append the minutes in buffer
        buff.append(s2);
       
        // finally we are done formatting the Java Date time
        // into XML DateTime format convert the buffer into
        // the String, and print it
        System.out.println(buff.toString());
    }
}
Producción

2021-02-23T10:38:30+00:00

Publicación traducida automáticamente

Artículo escrito por raghav14 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *