DateUtils
Installation:
gem install date_utils
Einbinden mit
require ‘rubygems’
require ‘date_utils’
include DateUtils
Was kann man damit machen? DateUtils erlaubt es, mit Jahres-, Monats-, Wochen- und Tagesobjekten zu arbeiten. Des ist vielleicht noch etwas nebulös, deshalb ein paar Beispiele.
# ein Year-Objekt anlegen
y = Year.new # aktuelles Datum wird verwendet
puts y.to_s
puts y.date
puts y.year
puts y.first_day
puts y.last_day
y = Year.new(Date.new(1961,11,21)) # bestimmtes Datum wird verwendet
puts y.to_s
puts y.date
puts y.year
puts y.first_day
puts y.last_day
y = Year.create(:year => 2007) # Year-Objekt ohne ein bestimmtes Datum
puts y.to_s
puts y.date # gibt den 1.1. aus
puts y.year
puts y.first_day
puts y.last_day
y = Year.new(Date.new(1961,11,21)) # bestimmtes Datum wird verwendet
m = y.get_month(2)
p m
puts m.first_day.to_s
puts m.last_day.to_s
puts m.month.to_s
puts m.num_days.to_s
w = y.get_week(23)
puts w.to_yaml
#— !ruby/object:DateUtils::Week
#date: &id001 1961-05-29
#first_day: 1961-05-29
#last_day: 1961-06-04
#month: !ruby/object:DateUtils::Month
# date: *id001
# first_day: 1961-05-01
# last_day: 1961-05-31
# month: 5
# num_days: 31
# num_week: 22
#
puts w.first_day.to_s
puts w.last_day.to_s
mo = y.months
#puts mo.to_yaml
mo.each {|monat|
puts monat.first_day.to_s
puts monat.last_day.to_s
puts monat.month.to_s
}
next_year = y.next
puts next_year.to_s
p next_year
p y.previous
we = y.weeks
puts we.last.num_week
puts we.last.date.to_s
puts we.last.last_day.to_s
monat_der_letzten_woche = we.last.month
puts monat_der_letzten_woche.to_yaml
#— !ruby/object:DateUtils::Month
#date: 1961-12-25
#first_day: 1961-12-01
#last_day: 1961-12-31
#month: 12
#num_days: 31
# Wochen Objekte
# Objekt mit aktueller Woche anlegen
woche = Week.new
p woche
puts woche.month.month
puts woche.month.num_days
puts woche.first_day.to_s
puts woche.last_day.to_s
puts woche.num_week
naechste_woche = woche.next
puts naechste_woche.to_yaml
vorherige_woche = woche.previous
puts vorherige_woche.to_yaml
tage = woche.days
puts tage.to_yaml
#include? anwendbar fuer Year/Month/Week-Objekte
puts woche.include?(Date.new(2007,6,7))
puts woche.include?(Date.new(2008,6,7))
puts y.include?(Date.new(2008,6,7))
offsets = DateUtils::GMTZone.offsets
puts offsets.to_yaml
Ich denke, die Beispiele sprechen für sich und müssen nicht großartig erklärt werden.
Falls doch noch eine Erklärung gewünscht wird, schreib mir oder kommentiere hier.
Wie man sieht, sind damit recht bequem Datumsberechnungen möglich, bei denen man bei den Standarddatumsfunktionen zuerst eigene Berechnungen schreiben müßte.
Ausblick:
Gibt es Vorschläge, welches Gem ich nächste Woche hier beschreiben soll? Falls nicht, werde ich eines nehmen, das mir persönlich interessant erscheint.

[...] 2007/24 DateUtils [...]
[...] your problem, but there is a gem call ‘date_utils’ which does various calendar calculations. See http://thopre.wordpress.com/2007/06/…e-week-200724/ for some examples! -Thomas –=20 Thomas Preymesser thopre thomas B=FCro: 030 – 830 353 88 mobil: [...]
ich weiß nicht, ob ich es damals nur vergessen habe, oder ob es daran liegt, daß man das in Ruby 1.9 jetzt explizit angeben muß:
um das fehlerfrei unter Ruby 1.9 ausführen zu können, ist noch eine Zeile
nötig.