In order to define a date and time, the DateTime data type is used. DateTime is defined in the format as “YYYY-MM-DDThh:mm:ss” where:
- YYYY states the year
- MM represents the month
- DD shows the day
- T indicates the beginning of the time segment needed.
- Hh determines the hour
- mm represents the minute
- ss indicates the second
Example: 2002-05-30T09:00:00
What are Time Zones in XML DateTime format?
In order to specify a time zone, we can either enter a DateTime in UTC time by inserting a “Z” behind the time,
Example:
2002-05-30T09:30:10Z
Or we can determine an offset from the UTC time by adding a positive or negative time behind the time,
Example:
2002-05-30T09:30:10-06:00 2002-05-30T09:30:10+06:00
So, The timezone may be defined as “Z” (UTC) or “(+|-)hh:mm.” Undefined timezones are called “undetermined.” The literal “Z”(Zulu) is used as a time-zone indicator, which indicates that the time is UTC when added at the end of a time.
What is Time Offset?
A time offset is an amount of time to be added or subtracted from the Coordinated Universal Time (UTC) time to get the current time of a specific place.
Approach to convert Java Date to XML DateTime String:
- Firstly we create an object of SimpleDateFormat. This class parses and formats the date and time in Java.
- Then, we create a StringBuffer which will hold the XML formatted string.
- Further, we calculate the ZoneOffset. It determines a time zone offset from Greenwich/UTC time. A time-zone offset is the amount of time that a time-zone differs from Greenwich/UTC. This is usually a fixed number of hours and minutes. Different parts of the world have different time-zone offsets. For example, India is 05:30 ahead of the Greenwich/UTC.
- At last, we combine all the required information in a single string, which is the formatted XML string.
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()); } } |
2021-02-23T10:38:30+00:00