Поскольку ваша структура данных должна соответствовать датам с указанием времени и без него, у вас есть два варианта:
Используйте объект Ruby DateTime со значением флага для времени, чтобы указать, что дата не имеет времени. Обычное значение флага для этого - 0, что означает, что полночь не может быть показана. (Полночь составляет 0 секунд после начала дня.)
Например, анализ "1 января 2010" в DateTime даст вам 1 января 2010 00: 00.
В противном случае вам нужно будет изобрести собственную структуру данных. Возможно, самым простым будет класс с DateTime и логическим флагом "show_time". - используя DateTime для хранения времени, вы сможете использовать методы вывода DateTime и выполнять арифметику с ними при необходимости.
Создание новой структуры данных не так уж сложно в Ruby, но если вы можете жить без задач точно в полночь, я бы порекомендовал способ 1. Обратите внимание, что вы, вероятно, захотите распечатать их без времени, так как это то, что просил определитель задачи. Или вы можете включить «(в любое время)» в вывод.
PS
Остерегайтесь часовых поясов! Много способов справиться, но вы должны быть уверены, что выбрали один сознательно.