How to Convert Java Date to XML DateTime String?

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 Stringimport 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



