PDT
is not a time zone
Anyone knows why "PDT" is not a standard tz?
Because “PDT” is not a time zone!
The “PDT” is a pseudo-time zone used by the media to indicate vaguely a set of time zones plus an indicator if they intended during the period when Daylight Saving Time (DST) is engaged or not (PST
). Avoid these 2-4 letter codes as they are not true time zones, not standardized, and are not even unique(!).
Proper time zone names
Specify a proper time zone name in the format of continent/region
, such as America/Montreal
, Africa/Casablanca
, or Pacific/Auckland
.
By PDT
any of these time zones, and more, may be intended:
ZoneId z = ZoneId.of( "America/Los_Angeles" ) ;
ZoneId z = ZoneId.of( "America/Tijuana" ) ;
ZoneId z = ZoneId.of( "America/Whitehorse" ) ;
But PDT
might not mean this zone as Arizona does not participate in the Daylight Saving Time (DST) nonsense, and the D
in the middle means DST.
ZoneId z = ZoneId.of( "America/Phoenix" ) ;
Avoid legacy date-time classes
Avoid SimpleTimeFormat
class as it is a part of the troublesome old date-time classes that are now legacy, supplanted by the java.time classes. Use DateTimeFormatter
instead.
Avoid TimeZone
as well. Replaced by ZoneId
.
Pass ZoneId
, not string
Someone invokes my API passing in "PDT" as the timezone.
Change your API to take a ZoneId
as an argument, rather than a mere String. That ensures valid values and gives you type-safety.
About java.time
The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as java.util.Date
, Calendar
, & SimpleDateFormat
.
To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.
The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.
You may exchange java.time objects directly with your database. Use a JDBC driver compliant with JDBC 4.2 or later. No need for strings, no need for java.sql.*
classes. Hibernate 5 & JPA 2.2 support java.time.
Where to obtain the java.time classes?