Kullanıcılara gösterdiğimde basit bir tarihe dönüştürmek istediğim db'de bir tarih saat sütunum var.
Bunu nasıl yapabilirim?
def shown_date # to_date mevcut değil ama aradığım şey bu self.date || self.exif_date_time_original.to_date son
Kullanıcılara gösterdiğimde basit bir tarihe dönüştürmek istediğim db'de bir tarih saat sütunum var.
Bunu nasıl yapabilirim?
def shown_date # to_date mevcut değil ama aradığım şey bu self.date || self.exif_date_time_original.to_date son
Yanıtlar:
DateTime#to_date
ActiveSupport ile mevcut:
$ 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
.to_date()
Standart yakutta bulunmayan bir utançtır, bu yüzden geçici bir çözüm yapmalıyız. Doğru saat dilimi çukur dizesi (!!!) ile DateTime'dan Date'e dönüştürmek zarif değildir. DateTime ve Date'in iç kısımlarını anlamak kolay değildir. Sadece öfkeli, görmezden gelin! :-)
Merhaba collimarco :) Kendi tarih / saat ekranınızı oluşturmak için ruby strftime yöntemini kullanabilirsiniz .
time.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"
Ruby 1.9.2 ve üzerinde, DateTime'a bir .to_date işlevi eklediler:
http://ruby-doc.org/stdlib-1.9.2/libdoc/date/rdoc/DateTime.html#method-i-to_date
Bu örnek yöntemi, 1.8.7 gibi önceki sürümlerde mevcut görünmüyor.
Geçenlerde bu süreci basitleştirmek ve görüşlerinizi vb. Düzeltmek için bir mücevher yazdım.
Şu adresten kontrol edin: http://github.com/platform45/easy_dates
Önce girişi bir dizeye dönüştürmeyi deneyin. Veritabanı sütun türü bir tarih olduğu sürece tarih olarak biçimlendirilecektir.
self.date || self.exif_date_time_original.to_s