121 votes

Transformer DateTime en simple Date dans Ruby on Rails

J'ai une colonne datetime en db que je veux transformer en une simple date quand je la montre aux utilisateurs.

Comment puis-je le faire?

def shown_date
 # to_date n'existe pas, mais est-ce que je suis à la recherche d'
 auto.date || auto.exif_date_time_original.to_date 
fin

178voto

Ryan McGeary Points 76053

DateTime#to_date n'existe pas avec ActiveSupport:

$ irb
>> DateTime.new.to_date
NoMethodError: undefined method 'to_date' for #<DateTime: -1/2,0,2299161>
    from (irb):1

>> require 'active_support/core_ext'
=> true

>> DateTime.new.to_date
=> Mon, 01 Jan -4712

61voto

gkrdvl Points 547

Bonjour collimarco :) vous pouvez utiliser ruby strftime méthode pour créer ur propre de la date/affichage de l'heure.

temps.strftime( string ) => string

  %a - The abbreviated weekday name (``Sun'')
  %A - The  full  weekday  name (``Sunday'')
  %b - The abbreviated month name (``Jan'')
  %B - The  full  month  name (``January'')
  %c - The preferred local date and time representation
  %d - Day of the month (01..31)
  %H - Hour of the day, 24-hour clock (00..23)
  %I - Hour of the day, 12-hour clock (01..12)
  %j - Day of the year (001..366)
  %m - Month of the year (01..12)
  %M - Minute of the hour (00..59)
  %p - Meridian indicator (``AM''  or  ``PM'')
  %S - Second of the minute (00..60)
  %U - Week  number  of the current year,
          starting with the first Sunday as the first
          day of the first week (00..53)
  %W - Week  number  of the current year,
          starting with the first Monday as the first
          day of the first week (00..53)
  %w - Day of the week (Sunday is 0, 0..6)
  %x - Preferred representation for the date alone, no time
  %X - Preferred representation for the time alone, no date
  %y - Year without a century (00..99)
  %Y - Year with century
  %Z - Time zone name
  %% - Literal ``%'' character

   t = Time.now
   t.strftime("Printed on %m/%d/%Y")   #=> "Printed on 04/09/2003"
   t.strftime("at %I:%M%p")            #=> "at 08:56AM"

22voto

joshaidan Points 1368

Je pense que dans Ruby 1.9.2 et au-dessus, ils ont ajouté un .to_date fonction DateTime:

http://ruby-doc.org/stdlib-1.9.2/libdoc/date/rdoc/DateTime.html#method-i-to_date

Cette méthode d'instance ne semble pas être présent dans les versions précédentes comme 1.8.7.

0voto

Ryan Points 279

J'ai récemment écrit un bijou pour simplifier ce processus et aux vaincus de vos points de vue, etc etc.

Check it out: http://github.com/platform45/easy_dates

0voto

CrazyCoderMonkey Points 153

Essayer de convertir l'entrée de la chaîne. Tant que la base de données de type de colonne est une date, elle sera formatée comme une date.

auto.date || auto.exif_date_time_original.to_s

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X