我需要根据我的服务器时区在我的应用程序中设置时区。我在IST的服务器时区= Asia / Kolkatta。在java8中,时区可以直接在@JsonFormat中设置,如下所示:
@JsonCreator
public SystemDateResponseDTO (@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd",timezone = "CST") @JsonProperty("systemDate") final Date systemDate)
{
this.systemDate = systemDate;
}
MY dto class:
@Override
public SystemDateResponseDTO getCurrentSystemDate() {
Date systemDate = systemVariablesRepository.findOne(MIRUNTIME).getDate();
ZoneId zoneId = ZoneId.of(mset.getTimeZone());
LocalDateTime localtDateAndTime = LocalDateTime.now(zoneId);
ZonedDateTime dateAndTimeInSydney = ZonedDateTime.of(localtDateAndTime, zoneId );
if (RsWebUtil.isNotNull(systemDate)) {
return new SystemDateResponseDTO(systemDate, dateAndTimeInSydney);
} else {
throw new ProcessingException("System Date not Found");
}
}
这里的时区,我不想硬编码。所以我以这种方式从我的* .properties中获取时区值:
@JsonCreator
public SystemDateResponseDTO(
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@JsonProperty("systemDate") final Date systemDate,
@JsonProperty("timeZone") final ZonedDateTime timeZone) {
this.systemDate = systemDate;
this.timeZone = timeZone;
LOGGER.info("######****###Default timezone######****###" + timeZone);
}
我当前的系统日期是07.02.2018,我的postgres数据库系统日期也是07.02.2018.Server时区是Asia / kolkatta。
从DTO获取iam发送的正确时区和日期。但在查看申请时,日期实际上是前一天(06.02.2018)。我的时区没有被采用,或者是否会在其他地方被覆盖?我使用java 8,postgres DB 9.6.1和Jboss 6.3。我已尝试直接在我的独立设置JAVA_OPTS =“ - Duser.timezone = IST”。但没有变化。有人可以帮忙吗?
有没有办法将我的timeZone值直接分配给@JsonFormat时区类型?