Ruby Time.parse дает мне из ошибки диапазона

Тот факт, что у вас есть (item=delete-after-tests) в выходных данных, означает, что вы обманули нас, не включив with_items:, который почти наверняка скрывается над вашей register: output_dhcp строкой.

Когда у вас есть оператор with_, он упаковывает фактический результат в список results, на который вы как бы намекнули с помощью output_dhcp.results.msg, но вы не можете запросить поле .msg из list ; вам нужно извлечь атрибут каждого члена списка, который map сделает для вас:

- debug:
    msg: '{{ output_dhcp.results | map(attribute="msg") | list }}'

Но если вы хотите 108 выражения VM 108, вам понадобится использовать regex_replace для его извлечения, но, по-видимому, только в элементах списка, которые могут ему соответствовать, например:

- debug:
    msg: >-
     {{ output_dhcp.results 
      | selectattr("msg", "match", "VM [0-9]+ .*")
      | map("regex_replace", ".*VM ([0-9]+) .*", "\\1")
      | first }}
20
задан Tony 28 April 2009 в 22:36
поделиться

5 ответов

Я предполагаю, что ожидание второй части строки (14) будет месяцем.

Эта ссылка может помочь вам разобрать его.

12
ответ дан 29 November 2019 в 23:00
поделиться

Если вы знаете формат строки, используйте:

Time.strptime(date, format, now=self.now) {|year| ...}   

http://www.ruby-doc.org/core-1.9/classes/Time.html#M000266

Это решит вашу проблему и, вероятно, будет быстрее, чем Time.parse .

РЕДАКТИРОВАТЬ:

Похоже, они взяли strptime из класса Time, но все равно он вызвал Date.strptime Если вы находитесь на Rails, вы можете сделать:

Date.strptime("05-14-2009 19:00","%m-%d-%Y %H:%M").to_time

, если вы используете чистый ruby, тогда вам нужно:

require 'date'
d=Date._strptime("05-14-2009 19:00","%m-%d-%Y %H:%M")

Time.utc(d[:year], d[:mon], d[:mday], d[:hour], d[:min], 
         d[:sec], d[:sec_fraction], d[:zone])

См. Также: Проблемы с форматированием даты и времени в Ruby on Rails .

26
ответ дан 29 November 2019 в 23:00
поделиться

Вероятно, ожидается формат «день-месяц-год», поэтому ваше первое значение пытается указать 5-й день 14-го месяца.

0
ответ дан 29 November 2019 в 23:00
поделиться

Это из-за эвристики разбора времени # .

И из-за англо-американских форматов.

С тире '-' он ожидает мм- дд-гггг, с косой чертой '/' он ожидает дд / мм / гггг.

Это поведение намеренно меняет в 1.9. для достижения стандартов eur, iso и jp date.

15
ответ дан 29 November 2019 в 23:00
поделиться

Возможно, вам не нужна эта проблема для решения этой проблемы, но я все же рекомендую проверить синтаксический анализатор даты / времени на естественном языке Chronic , он пару раз спас меня от работы.

4
ответ дан 29 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: