Um den aktuellen Tag in Rails zu erhalten, können Sie verwenden:
Date.today
den vorherigen Samstag zu erhalten (seit heute Monday 3rd July
ist, das ist Saturday 1st July
) können Sie verwenden:
Date.today.beginning_of_week(:saturday)
Or , wenn das, was Sie eigentlich wollten, war die vorherige Woche Samstag (Saturday 24th June
), dann können Sie verwenden:
Date.today.weeks_ago(1).beginning_of_week(:saturday)
Oder, wenn Sie bevorzugen:
1.week.ago.beginning_of_week(:saturday)
... beachten Sie jedoch, dass die oben wird ein ActiveSupport::TimeWithZone
Objekt anstatt ein Date
Objekt zurückgeben - so wird etwas anders verhalten.
Lesen Sie die Dokumentation der Schienen - insbesondere die ActiveSupport
extensions to ruby's Date
class, um zu sehen, welche Methoden zur Verfügung stehen.
Wenn aus irgendeinem Grunde, Sie benötigen, um dies zu tun, in der reinen ruby
(dh ohne die oben genannten ActiveSupport
Erweiterungen, die mit rails
gebündelt kommen), dann könnte man stattdessen verwenden, um die Date.parse
method:
require 'date'
Date.parse("Saturday") - 7
# => Sat, 01 Jul 2017
Um Ihr Objekt Date
(oder ein ähnliches Objekt) in das von Ihnen gewünschte Zeichenfolgenformat ("24-June-2017"
) zu konvertieren, können Sie die Methode strftime
von Ruby verwenden:
(Date.parse("Saturday") - 7).strftime('%d-%B-%Y')
In Schienen ist es ein common convention, solche benutzerdefinierten Datumsformate in einem Gebietsschema oder einem Initialisierer zu platzieren, um Wiederholungen zu vermeiden. Sie können dann nach Namen dieses Formats Referenz:
# config/initializers/date_formats.rb
# (Call this whatever you want!)
Date::DATE_FORMATS[:calendar] = '%d-%B-%Y'
# Anywhere else in the rails app
Date.today.beginning_of_week(:saturday).to_s(:calendar)
# => "01-July-2017"
heute (Tag Sie die Frage gestellt) 3 1 2017. letzter Samstag Juli, Juli, war der Samstag 2017. vorletztes war am 24. Juni 2017. so dass Sie wollen die Datum eines bestimmten Tages, eine Woche vorher? – eiko