Home >Java >javaTutorial >Why Does SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') Show IST Instead of UTC?
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") Displays Timezone as IST
The SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") constructor is designed to parse date strings in the ISO-8601 format. However, the 'Z' suffix alone does not set the timezone for the parsed date.
Your issue arises when you use this format to parse a date string like "2013-09-29T18:46:19Z". As 'Z' represents Zulu time (UTC), you might expect the parsed date to display as UTC. However, you're encountering the IST (Indian Standard Time) timezone being displayed.
Understanding the Issue
The key here is that you haven't explicitly set the timezone for the SimpleDateFormat object. Consequently, it defaults to the JVM's default timezone, which is likely IST in your case. So, while the date string uses the 'Z' suffix to indicate UTC, the SimpleDateFormat object parses it in IST.
Resolving the Issue
To resolve this problem and ensure that the parsed date is displayed in UTC, set the timezone for SimpleDateFormat explicitly to GMT using:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
By setting the timezone to GMT, you tell SimpleDateFormat to parse the date string in UTC, even though it has the 'Z' suffix. This guarantees the parsed date displays correctly in UTC.
The above is the detailed content of Why Does SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') Show IST Instead of UTC?. For more information, please follow other related articles on the PHP Chinese website!