Android change date format from UTC to local time with the following code snippet. This is one of those code snippets I find myself coming back to again and again so it was time to make it into a post.

Android change date format from UTC to local time

The following snippet changes from format:

2017-03-27 20:00:00UTC to 03/27/2017 - 1200 PM

public String getNewDate(){

        if (getOldDate() == null){
            return "";
        }

        SimpleDateFormat oldFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss'UTC'");
        oldFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date value = null;
        String dueDateAsNormal ="";
        try {
            value = oldFormatter.parse(getOldDate());
            SimpleDateFormat newFormatter = new SimpleDateFormat("MM/dd/yyyy - hh:mm a");

            newFormatter.setTimeZone(TimeZone.getDefault());
            dueDateAsNormal = newFormatter.format(value);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return dueDateAsNormal;
    }

The `getNewDate` function will call the getOldDate() function and will reformat the date String that it provides. It uses uses oldFormatter and newFormatter strings. Feel free to update these string to match your date format and everything should work peachy.

If you are looking for something similar but for PHP see my post PHP change date format.

Her is some help to get the formatting right:

Letter  Date or Time Component  Presentation        Examples
------  ----------------------  ------------------  -------------------------------------
G       Era designator          Text                AD
y       Year                    Year                1996; 96
Y       Week year               Year                2009; 09
M/L     Month in year           Month               July(MMMM); Jul(MMM); 07(MM)
w       Week in year            Number              27
W       Week in month           Number              2
D       Day in year             Number              189
d       Day in month            Number              10
F       Day of week in month    Number              2
E       Day in week             Text                Tuesday; Tue
u       Day number of week      Number              1
a       Am/pm marker            Text                PM
H       Hour in day (0-23)      Number              0
k       Hour in day (1-24)      Number              24
K       Hour in am/pm (0-11)    Number              0
h       Hour in am/pm (1-12)    Number              12
m       Minute in hour          Number              30
s       Second in minute        Number              55
S       Millisecond             Number              978
z       Time zone               General time zone   Pacific Standard Time; PST; GMT-08:00
Z       Time zone               RFC 822 time zone   -0800
X       Time zone               ISO 8601 time zone  -08; -0800; -08:00

Let me know if this code snipped helped you, thanks!

Cheers!