根据服务器时区处理时区

时间:2018-02-07 05:16:16

标签: json postgresql java-8 jboss6.x zoneddatetime

我需要根据我的服务器时区在我的应用程序中设置时区。我在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时区类型?

0 个答案:

没有答案