Проверка даты для недействительных лет - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь сделать то, что кажется чем-то совершенно базовым c, но изо всех сил. Я хочу иметь возможность определить, является ли дата действительной, если это так, проанализировать ее и вывести в форматированной строке, иначе вернуть «неверная дата». Вот где я дошел до этого;

require 'date'
date_last_printed = current_item.getProperties['Last Printed']

begin
    d = DateTime.parse(date_last_printed.to_s)
    if Date.valid_date?(d.year, d.month, d.day)
        d.strftime("%d/%m/%Y %H:%M:%S")
    else
        'bad date'
    end
rescue Exception => ex
    ex.message
end

Однако 01/01/1601 возвращается в качестве действительной даты.

Как настроить мой фрагмент так, чтобы он возвращал только действительные даты (в или после начало Unix времени эпохи).

1 Ответ

0 голосов
/ 19 января 2020

вы можете выполнить преобразование эпох в начале оператора.

begin
  raise if (t=Time.parse(date_last_printed)).to_i < 0
  t.strftime("%d/%m/%Y %H:%M:%S")
rescue
  'bad date'
end
...