Java SimpleDateFormat: Difference between revisions
No edit summary |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=External= | =External= | ||
* | * https://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html | ||
=Internal= | =Internal= | ||
Line 11: | Line 11: | ||
<tt>DateFormat.parse()</tt> returns a <tt>Date</tt> instance whose <tt>getTime()</tt> is always relative to GMT, regardless of the default JVM timezone or the timezone offset specified in the date string. For more details on <tt>DateFormat.parse()</tt> and timezone, see [[Java_Time#Time_Zone_and_DateFormat|Java Time - Time Zone and DateFormat]]. | <tt>DateFormat.parse()</tt> returns a <tt>Date</tt> instance whose <tt>getTime()</tt> is always relative to GMT, regardless of the default JVM timezone or the timezone offset specified in the date string. For more details on <tt>DateFormat.parse()</tt> and timezone, see [[Java_Time#Time_Zone_and_DateFormat|Java Time - Time Zone and DateFormat]]. | ||
=Thread Safety= | |||
SimpleDateFormat instances are '''NOT thread safe'''. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally. A common solution is to '''clone''' the format instance to avoid troubles. | |||
=Samples= | =Samples= | ||
Line 66: | Line 70: | ||
<syntaxhighlight lang='java'> | <syntaxhighlight lang='java'> | ||
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss. | new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Also see{ { | Also see: {{Internal|ISO_8601#Java_SimpleDateFormat|ISO 8601}} |
Latest revision as of 17:20, 14 November 2018
External
Internal
Overview
DateFormat.parse() returns a Date instance whose getTime() is always relative to GMT, regardless of the default JVM timezone or the timezone offset specified in the date string. For more details on DateFormat.parse() and timezone, see Java Time - Time Zone and DateFormat.
Thread Safety
SimpleDateFormat instances are NOT thread safe. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally. A common solution is to clone the format instance to avoid troubles.
Samples
"yy/MM/dd hh:mm:ss,SSS a"
produces:
13/01/31 01:00:00,000 PM
Excel, CSV and milliseconds
Excel understands "." so you may want to:
13/01/31 01:00:00.000
Hour in Day
Warning If not using AM/PM (no "a" in the format), make sure you use HH for hours (instead of hh).
According to the documentation:
- "h" - Hour in am/pm (1-12)
- "H" - Hour in a day (0-23)
Month
To parse "Sep" use "MMM".
To parse "09" use "MM".
"T" in timestamp
If "T" shows in the timestamp, it can be specified as 'T' in format.
Example: "2016-08-03T13:54:39.464-0400" is parsed with:
new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ");
DateFormat and Timezone
ISO 8601 Format
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX")
Also see: