当我坚持一个 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中可以看到刚刚发布的区域信息。我发现该应用程序何时在 heroku 上投入生产,服务器与用户位于另一个时区。一些发现者返回错误的结果。
这里来自 ledger.json:
"fields": [
{
"fieldName": "startDate",
"fieldType": "ZonedDateTime"
},
{
"fieldName": "endDate",
"fieldType": "ZonedDateTime"
},
难道我做错了什么 ?