0
votes

Déterminez si une valeur de temps existe dans la chaîne de date / heure

Je cherche à écrire une méthode qui prendra une chaîne et me donnera

  1. la valeur DateTime si une valeur de temps est fournie dans la chaîne li>
  2. La valeur DateTime à la fin de la journée Si seulement une date est fournie dans la chaîne li> ol>

    i peut utiliser [to_datetime] [1] code> pour convertir la chaîne mais je ne vois pas un moyen de savoir si une valeur de temps a été fournie car la dateTime retournée s'initialisera à 00:00:00 +0000 code> si une valeur n'est pas fournie. P>

    En ce moment, il s'agit d'un problème car to_datetime code> me donne une valeur par défaut lorsque J'utilise l'entrée. P>

    "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
    


0 commentaires

3 Réponses :


0
votes

Déterminez d'abord avec une regex dans quelle situation vous êtes, puis j'ajouterais simplement 1 jour moins une seconde. XXX


1 commentaires

Juste mais je ne sais pas si une date a été fournie ou une date d'heure a été fournie. Je veux seulement aller à la fin de la journée si aucune valeur de temps n'est présente dans la chaîne



0
votes

ahh le fit sortir. Je peux utiliser _PARSE pour obtenir les pièces:

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 commentaires

0
votes

Cela pourrait vous aider:

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 commentaires