【问题标题】:Java getTime() getting time from `time with time zone` not getting correctlyJava getTime()从“时区时间”获取时间不正确
【发布时间】:2016-10-21 15:07:16
【问题描述】:

我的 postgresql 数据库中有time with time zone。我的位置是印度,所以它存储为10.00.00+5.30。我使用 java Resultset 得到的结果如下:

假设:

String time = rst.getTime(1).toString();

预期结果是:10:00,但我得到的结果是21.30。请指导我做错了什么?

【问题讨论】:

  • 当你使用 toString 时,你“丢失”了时区信息。
  • @assylias 同意。我怎样才能得到正确的时间?
  • 请记住,Postgres 实际上并不存储您发送的时区偏移量。它在存储之前将其标准化为 UTC。

标签: java postgresql time timezone


【解决方案1】:

使用 DateFormat 将时区设置为已解析的字符串。

SimpleDateFormat isoFormat = new SimpleDateFormat("HH:mm");
isoFormat.setTimeZone(TimeZone.getTimeZone("IST"));
String time = isoFormat.format(rst.getTime(1));

【讨论】:

  • 我只有10.00.00+5.30 而没有2010-05-23T09:01:02
  • @Santhucool 您需要使用具有正确时区的 DateFormat,如本答案所述,然后:String time = isoFormat.format(rst.getTime(1));
猜你喜欢
  • 1970-01-01
  • 2021-03-13
  • 2014-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
  • 2018-07-05
  • 1970-01-01
相关资源
最近更新 更多