Groovy DateTime Формат неожиданный вывод - PullRequest
0 голосов
/ 12 ноября 2018

Приведенный ниже код не возвращает ожидаемый результат. Что с ним не так?

def a = new Test(new Date());

println a.getLogFormatDate()

class Test
{
    String _dateTime;
    static final String _logDateFormat = "E MMM dd HH:mm:ss zzz yyyy";
    static final String _timeZoneUTC = "UTC";

    Test(Date dateTime)
    {
        _dateTime = dateTime;
    }

    public String getLogFormatDate()
     {
        return _dateTime.format(_logDateFormat, TimeZone.getTimeZone(_timeZoneUTC));
     }
}​

Ожидаемый результат:

Пн. 12 ноября 14:10:46 UTC 2018

Фактический объем производства:

Е МММ дд ЧЧ: мм: сс зззггг

1 Ответ

0 голосов
/ 12 ноября 2018

Вы определили _dateTime поле класса с типом String, поэтому ваш getLogFormatDate вызывает

String.format("E MMM dd HH:mm:ss zzz yyyy", TimeZone.getTimeZone("UTC"))

пока вы ожидаете

Date.format("E MMM dd HH:mm:ss zzz yyyy", TimeZone.getTimeZone("UTC"))

подлежит вызову.

Определите _dateTime поле как Date, и оно будет работать так, как вы ожидаете.

...