значение времени изменяется при отображении в поле зрения? - PullRequest
0 голосов
/ 05 ноября 2018

Я столкнулся со странной проблемой с привязкой Grails 3 раза. У меня есть простой домен следующим образом

import java.sql.Time

class Marathon {


    String name
    String location
    Time startTime

    static constraints = {
    }
}

В начальной загрузке я установил часовой пояс по умолчанию для США / горы

TimeZone.setDefault(TimeZone.getTimeZone("US/Mountain"))

Вот пользовательский конвертер данных, который конвертирует время

import grails.databinding.converters.ValueConverter

import java.text.SimpleDateFormat

class TimeConverter implements ValueConverter {

    static final String TIME_FORMAT = "h:mm a"

    boolean canConvert(value) {
        value instanceof String
    }

    def convert(value) {


        def timeZone = TimeZone.getTimeZone('US/Mountain')
        def formatter = new SimpleDateFormat(TIME_FORMAT.replace('yyyy', 'yy'))
        if (timeZone) formatter.setTimeZone(timeZone)

        return new java.sql.Time(formatter.parse(value).getTime())

    }

    Class<?> getTargetType() {
        java.sql.Time
    }
}

Вот проблема.

В базе данных время хранится правильно. т.е. когда я сохраняю запись с 10:00 утра как параметр времени, она сохраняется в базе данных как 10: 00: 00

enter image description here

Но когда я извлекаю запись и отображаю время, отображается отображаемое время 21:30:00, то есть 9:30 вечера, что неверно. Что вызывает это автоматическое преобразование времени? Я ценю любую помощь. Я использую Grails 3.3.8.

hang

...