Leonid Vygovskiy <Leonid.Vygovskiy@gmail.com> writes:
> I study how to work with the timezone in JDBC driver and found the code
> which I don't understand.
> This is implementation of the method
> ConnectionFactoryImpl.createPostgresTimeZone() which has the comment:"
> Convert Java time zone to postgres time zone. All others stay the same
> except that GMT+n changes to GMT-nn and vise versa."
> I'm confused with that changing. Can anybody talk about the reasons and
> motives of this behavior?
I'm guessing that Java thinks the time zone name "GMT+2" means 2 hours
east of Greenwich (ISO-8601 sign convention). Postgres thinks it means
2 hours west of Greenwich (POSIX sign convention). See
https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-TIMEZONEShttps://www.postgresql.org/docs/current/datetime-posix-timezone-specs.html
The great thing about standards is there are so many to choose from ;-)
regards, tom lane