Перейти к основному содержимому

Преобразование строки в дату в Groovy

· 2 мин. чтения

1. Обзор

В этом коротком руководстве мы узнаем, как преобразовать строку , представляющую дату, в реальный объект Date в Groovy .

Однако следует помнить, что этот язык является усовершенствованием Java. Таким образом, мы по-прежнему можем использовать любой старый простой метод Java в дополнение к новым методам Groovy.

2. Использование формата даты

Во- первых, мы можем, как обычно, разобрать строки на даты, используя Java DateFormat :

def pattern = "yyyy-MM-dd"
def input = "2019-02-28"

def date = new SimpleDateFormat(pattern).parse(input)

Однако Groovy упрощает выполнение этой операции. Он инкапсулирует такое же поведение внутри удобного статического метода Date.parse(String format, String input) :

def date = Date.parse(pattern, input)

Короче говоря, этот метод является расширением объекта java.util.Date , и внутри он создает экземпляр java.text.DateFormat при каждом вызове для безопасности потоков.

2.1. Проблемы совместимости

Чтобы уточнить, метод Date.parse(формат строки, ввод строки) доступен, начиная с версии 1.5.7 Groovy.

Версия 2.4.1 представила вариант, принимающий третий параметр, указывающий часовой пояс: Date.parse(Формат строки, ввод строки, зона часового пояса) .

Однако начиная с версии 2.5.0 произошли критические изменения , и эти усовершенствования больше не поставляются с groovy-all .

Итак, в дальнейшем их нужно включать в виде отдельного модуля с именем groovy-dateutil :

<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-dateutil</artifactId>
<version>2.5.6</version>
</dependency>

Также существует версия 3.0.0, но в настоящее время она находится на стадии альфа-тестирования.

3. Использование JSR-310 LocalDate

Начиная с версии 8, в Java появился совершенно новый набор инструментов для работы с датами: Date/Time API .

Эти API лучше по нескольким причинам, и их следует предпочесть устаревшим .

Давайте посмотрим, как использовать возможности парсинга java.time.LocalDate от Groovy:

def date = LocalDate.parse(input, pattern)

4. Вывод

Мы видели, как преобразовать строку в дату на языке Groovy, обращая внимание на особенности между конкретными версиями.

Как всегда, исходный код и модульные тесты доступны на GitHub .