【问题标题】:when i am retrieving time from mysql,the time is late by six hours当我从 mysql 检索时间时,时间晚了六个小时
【发布时间】:2019-09-04 05:10:13
【问题描述】:

我已经使用休眠 JPA 在 MySQL 中插入了日期列,它插入了正确的日期和时间,但是当我在我的 java 代码中检索该列时,它给了我六个小时的延迟时间

这是我的模型 a.java:

import java.util.Date;
@CreationTimestamp
@Column(name = "Created_at", updatable = false, nullable = true)
private Date Created_at;
public Date getCreated_at() {
        return Created_at;
    }
public void setCreated_at(Date created_at) {
        Created_at = created_at;
    }

这是我的存储库代码:

@Repository
@Transactional
public interface abcRepository extends JpaRepository<abc, String> {

@Query(value = "select Created_at from tbl where UserId =:UserId", nativeQuery = true)
    public List<Object[]> getList(@Param("UserId")String walletUserId);
}

这是我检索数据的主要代码:

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> mapofStringObject = new LinkedHashMap<String, Object>();
List<Object[]> listDetails = null;
listDetails = abc.getList(UserId);

for (Object[] o : listDetails) {

mapofStringObject = new LinkedHashMap<String, Object>();        
mapofStringObject.put("paymentCreated_at", o[0]);
list.add(mapofStringObject);
}

我希望日期和时间像 mysql 表中一样 2019-09-04 10:23:31 但实际上它给了我输出 2019-09-04T04:53:31.000+0000 即晚了六个小时

我正在尝试这个我得到了

代码:

TimeZone tz = c.getTimeZone();
Calendar c2 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss z");
System.out.println(sdf.format(c2.getTime()));
System.out.println("Current TimeZone is : " + tz.getDisplayName());

输出:

  • 04/09/2019 05:24:33 UTC
  • 当前时区是:协调通用 时间

在mysql中我试过了:

SELECT @@global.time_zone, @@session.time_zone;

输出

【问题讨论】:

  • 你的时区是什么时候?我打赌它是 UTC 前 6 小时...
  • 我已经编辑了代码,请你检查一下,告诉我哪里错了,这对@StephenC很有帮助
  • 您所在位置与服务器所在位置之间的时区是否存在差异? Windows 时钟的时区是多少?服务器 windows 时钟的时区是什么?或者程序是否插入了服务器正在考虑/不了解的 TimeZone 的值?我们看不到任何实际生成日期值并将其插入的代码
  • 您似乎将 UTC 时间存储在数据库中。这很好。但我的猜测是你显示它就像是当地时间一样。这可能会有所帮助:stackoverflow.com/questions/12487125/…
  • 是的,我认为这是问题所在,但我不知道如何检查或设置它@CaiusJard

标签: java mysql hibernate spring-boot jpa


【解决方案1】:

mysql 时区是 IST 并且采用 utc 格式,所以我在代码中将时区更改为 IST

How to Parse Date from GMT TimeZone to IST TimeZone and Vice Versa in android

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-29
    • 2011-10-27
    • 2012-09-04
    • 2015-07-27
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多