Java SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss’Z'”) gives timezone as IST

You haven’t set the timezone only added a Z to the end of the date/time, so it will look like a GMT date/time but this doesn’t change the value. Set the timezone to GMT and it will be correct. SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss’Z'”); sdf.setTimeZone(TimeZone.getTimeZone(“GMT”));

How can I get current date in Android?

You can use the SimpleDateFormat class for formatting date in your desired format. Just check this link where you get an idea for your example. For example: String dateStr = “04/05/2010”; SimpleDateFormat curFormater = new SimpleDateFormat(“dd/MM/yyyy”); Date dateObj = curFormater.parse(dateStr); SimpleDateFormat postFormater = new SimpleDateFormat(“MMMM dd, yyyy”); String newDateStr = postFormater.format(dateObj); Update: The detailed example … Read more

Illegal pattern character ‘T’ when parsing a date string to java.util.Date

Update for Java 8 and higher You can now simply do Instant.parse(“2015-04-28T14:23:38.521Z”) and get the correct thing now, especially since you should be using Instant instead of the broken java.util.Date with the most recent versions of Java. You should be using DateTimeFormatter instead of SimpleDateFormatter as well. Original Answer: The explanation below is still valid … Read more

Why is Java’s SimpleDateFormat not thread-safe? [duplicate]

SimpleDateFormat stores intermediate results in instance fields. So if one instance is used by two threads they can mess each other’s results. Looking at the source code reveals that there is a Calendar instance field, which is used by operations on DateFormat / SimpleDateFormat. For example parse(..) calls calendar.clear() initially and then calendar.add(..). If another … Read more

What is this date format? 2011-08-12T20:17:46.384Z

The T is just a literal to separate the date from the time, and the Z means “zero hour offset” also known as “Zulu time” (UTC). If your strings always have a “Z” you can use: SimpleDateFormat format = new SimpleDateFormat( “yyyy-MM-dd’T’HH:mm:ss.SSS’Z'”, Locale.US); format.setTimeZone(TimeZone.getTimeZone(“UTC”)); Or using Joda Time, you can use ISODateTimeFormat.dateTime().