ruby gem of the week 2007/24

15 06 2007

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.

Advertisements

Aktionen

Information

3 responses

21 06 2007
ruby gem of the week « thopre

[…] 2007/24 DateUtils […]

18 01 2009
Getting number of days in a month | keyongtech

[…] your problem, but there is a gem call ‚date_utils‘ which does various calendar calculations. See https://thopre.wordpress.com/2007/06/…e-week-200724/ for some examples! -Thomas –=20 Thomas Preymesser thopre thomas B=FCro: 030 – 830 353 88 mobil: […]

14 02 2009
Thomas Preymesser

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

require ‚yaml‘

nötig.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s




%d Bloggern gefällt das: