gpt4 book ai didi

mysql - jhipster 和 ZonedDateTime

转载 作者:行者123 更新时间:2023-11-30 21:53:31 28 4
gpt4 key购买 nike

当我持久化一个 ZonedDateTime 时,区域信息刚刚被释放。

    ZonedDateTime now = ZonedDateTime.now(ZoneId.of("America/Santo_Domingo"));
ZonedDateTime firstMomentInMonth = now.withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS);
ZonedDateTime lastMomentInMonth = now.withDayOfMonth(now.toLocalDate().lengthOfMonth()).truncatedTo(ChronoUnit.DAYS).with(LocalTime.of(23, 59, 59, 999999999));

log.debug("firstMomentInMonth = {}", firstMomentInMonth);
log.debug("lastMomentInMonth = {}", lastMomentInMonth);
ledger = new Ledger();
ledger.setStartDate(firstMomentInMonth);
ledger.setEndDate(lastMomentInMonth);
return ledgerRepository.save(ledger);

日志输出:

  firstMomentInMonth =  2017-09-01T00:00-04:00[America/Santo_Domingo]
lastMomentInMonth = 2017-09-30T23:59:59.999999999-04:00[America/Santo_Domingo]

在 MySql Workbemnch 中:

 '6', '2017-09-01 00:00:00', '2017-09-30 23:59:59', 'OPEN', NULL, '1', '3'

,在Workbench中可以看到刚才放出的zone信息。我发现该应用程序何时在 heroku 上投入生产,服务器位于与用户不同的时区。一些发现者返回错误的结果。

这里来自 ledger.json:

"fields": [
{
"fieldName": "startDate",
"fieldType": "ZonedDateTime"
},
{
"fieldName": "endDate",
"fieldType": "ZonedDateTime"
},

我做错了什么吗?

最佳答案

MySQL 中的时间戳没有区域信息。因此,部署应用程序的服务器的区域信息很重要。保存在 db 中的时间将使用服务器的区域信息在 java 中创建为 dateTime。

对于从客户端传递到服务器的日期,还应包含区域信息,如“+04:00”。

对于 heroku,您应该找到一种方法来设置 java 应用程序的区域。您可以使用系统属性对其进行设置。也许 heroku 提供了一种方法来设置它。

关于mysql - jhipster 和 ZonedDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46143383/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com