Postgresql 这是postgres jdbc处理postgres时间戳的错误吗?

Postgresql 这是postgres jdbc处理postgres时间戳的错误吗?,postgresql,jdbc,timestamp,Postgresql,Jdbc,Timestamp,请回答这个问题: 现在我用 new java.sql.Timestamp(date.getTime() + date.getTimezoneOffset() * 60000) 上载日期值,以及 tstmp.getTime() - tstmp.getTimezoneOffset() * 60000 从postgres下载价值 但是,date.getTime()是UTC时区1970-01-01的毫秒,它是静态的,与客户端时区无关,请参见下面的内容 new Date(1443145546920)

请回答这个问题:

现在我用

new java.sql.Timestamp(date.getTime() + date.getTimezoneOffset() * 60000)
上载日期值,以及

tstmp.getTime() - tstmp.getTimezoneOffset() * 60000
从postgres下载价值

但是,date.getTime()是UTC时区1970-01-01的毫秒,它是静态的,与客户端时区无关,请参见下面的内容

new Date(1443145546920)
Fri Sep 25 2015 09:45:46 GMT+0800 (中国标准时间)
*Now i change timezone from Beijing/Shanghai to Tokyo*
new Date(1443145546920)
Fri Sep 25 2015 10:45:46 GMT+0900 (Japan Standard Time)
听着,1443145546920应该总是2015年9月25日星期五01:45:46+0000,永远不要改变我的客户时区

因此,正确的方法应该是:

      client(utc+8)                                   dbserver(utc)
  upload time 1443145546920 without tzoffset 
                                                  write 1443145546920 
  download 
                                                  send 1443145546920
  got 1443145546920 and add client tzoffset 480m
但postgres jdbc向我展示了这一点:

      client(utc+8)       jdbc of pg                  dbserver(utc)
  upload time 1443145546920 + tzoffset 
                      - tzoffset 480m
                                                  write 1443145546920 
  download 
                                                  send 1443145546920
                      + tzoffset 480m
  got 1443145546920 + tzoffset
  manual substract tzoffset

使用珍贵的标题空间来描述所谓的“bug”。如果这是一个错误,让它自然形成。嗯,我的英语很差,你能给我一个关于它的简短标题吗?请出示表格定义。特别是,您使用的是时间戳还是带时区的时间戳?没有表,只是一个测试sql:“选择to_json(?::timestamp)作为a,to_json(current_timestamp::timestamp)作为b”,请参阅。我知道带时区的时间戳是更好的选择,但是Javascript不支持Date.setTimezoneOffset,所以utc是唯一的方法。这是否回答了您的问题: