синтаксический анализ строки на сегодняшний день с заданной информацией

#parsing #grails #groovy

#синтаксический анализ #grails #groovy

Вопрос:

Я знал, что на этой странице есть некоторые проблемы, подобные этой, но я не нашел своего ответа, пожалуйста, помогите мне решить это. Я получил:

 params.month = JANUARY
params.year = 2014
params.date = 10
  

Я пытался

 def parse = new Date(2014, JANUARY, 10)
print parse(format(yyyy/MM/dd))
  

Результат:

 2014/01/10
  

но когда я попытался

 def parse = new Date(params.year.toInteger(), params.month.toInteger(), params.date.toInteger())
  

он не может анализировать params.month.toInteger()

Комментарии:

1. ЯНВАРЬ означает месяц ЯНВАРЬ (01)

2. вместо 01 измените его на 1.

Ответ №1:

Не используйте устаревшие конструкторы, такие как Date(year, month, day)

Я рекомендую использовать метод Groovy JDK parse для создания экземпляра Date.

 def yourDateInstance = Date.parse('yyyy/MM/dd, "${params.year}/${params.month}/${params.date}")
  

Ответ №2:

попробуйте это

 def parse = new Date(2014, 0 , 10)
  

ПРИМЕЧАНИЕ: в Java месяцы начинаются с 0 , 0 = ЯНВАРЬ

И конструктор Date имеет дату подписи (int year, int month, int date), это является причиной исключения, поскольку JANUARY является строкой, поэтому ее нельзя проанализировать в int

Комментарии:

1. Этот конструктор устарел с Java 1.1 (1997!)