javadateformatdatetime

Get formatted string from Calendar


I've got a Calendar Date in Java.

I need to convert it in a String with this format :

2020-12-29T00:00:00+01:00

How can I do it?

Thank you so much for your help.


Solution

  • Get the Date object by calling Calendar#getTime and format it using a SimpleDateFormat with the format, yyyy-MM-dd'T'HH:mm:ssXXX.

    Note: Since the desired string has timezone offset of +01:00 hours, make sure you set the timezone of the SimpleDateFormat object to TimeZone.getTimeZone("GMT+1") before calling SimpleDateFormat#format.

    Demo:

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.TimeZone;
    
    public class Main {
        public static void main(String[] args) throws ParseException {
            Calendar calendar = Calendar.getInstance();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
            sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));
            Date date = calendar.getTime();
            String formatted = sdf.format(date);
            System.out.println(formatted);
        }
    }
    

    Another example:

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.TimeZone;
    
    public class Main {
        public static void main(String[] args) throws ParseException {
            String dateTimeString = "2020-12-29T00:00:00+01:00";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
            Date obj = sdf.parse(dateTimeString);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(obj);
    
            // Formatting this calendar object
            Date date = calendar.getTime();
            sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));
            String formatted = sdf.format(date);
            System.out.println(formatted);
        }
    }
    

    Output:

    2020-12-29T00:00:00+01:00