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 .