Определите, существует ли значение времени в строке даты / времени - PullRequest
0 голосов
/ 07 марта 2020

Я хочу написать метод, который будет принимать строку и давать мне

  1. Значение даты и времени, если в строке указано значение времени
  2. Значение даты и времени в конец дня, если в строке указана только дата

Я могу использовать [to_datetime][1] для преобразования строки, но я не вижу способа узнать, было ли предоставлено значение времени, потому что возвращаемое DateTime будет инициализировано в 00:00:00 +0000, если значение не предоставлено.

Сейчас это проблема, потому что to_datetime дает мне значение по умолчанию, когда я анализирую ввод.

"1-1-2012".to_datetime            # => Sun, 01 Jan 2012 00:00:00 +0000
"01/01/2012 23:59:59".to_datetime # => Sun, 01 Jan 2012 23:59:59 +0000

Я что-то упустил? Есть ли лучший способ преобразовать входные данные, чтобы я знал, было ли предоставлено значение времени?

Ответы [ 3 ]

0 голосов
/ 07 марта 2020

Ааа понял это. Я могу использовать _parse, чтобы получить куски:

DateTime._parse(date_only)
{:year=>2012, :mon=>1, :mday=>1}

DateTime._parse(date_and_time)
{:hour=>23, :min=>59, :sec=>59, :year=>2012, :mon=>1, :mday=>1}
0 голосов
/ 07 марта 2020

Это может помочь вам:

date = '10/10/2000'
result = begin
           DateTime.strptime(date, '%d/%m/%Y %H:%M:%S')
         rescue ArgumentError => e
           DateTime.strptime(date, '%d/%m/%Y').at_end_of_day
         end
0 голосов
/ 07 марта 2020

Сначала определите с помощью регулярного выражения, в какой вы ситуации, а затем я бы просто добавил 1 день минус одну секунду.

my_date_time = "1-1-2012".to_datetime + 1.days - 1.seconds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...