Ruby on Rails: Datum aus Kalenderwoche, Jahreszahl und Wochentag berechnen

Zunächst wird ein Datumsobjekt erstellt, dass auf den 1. Januar des Jahres zeigt.

date = Date.parse("01-01-"+year)

Dann wird an Hand der Tageszahl (Montag == 1) der Offset berechnet.

if date.cwday <= 4 # Donnerstag oder kleiner: Zurueck rechnen auf Montag x = -8 + (date.cwday+1); else # Offset auf Folge-Woche x = 8 - date.cwday end

Mit einer kleinen Hilfsfunktion wird der Offset bezüglich des gewünschten Wochentages angepasst.

x += day_number(day_string) - 1

Zu guter letzt wird das Datum berechnet.

date + x + ( 7*(week-1) )

Hier der komplette Code:

# Berechnet das Datum zu einem Wochentag in einer Kalenderwoche in einem Jahr
  def week_to_date(week, year, day_string)
    # Datums Objekt des ersten Jahrestages
    date = Date.parse("01-01-"+year)
    # Pruefen des nummerischen Wertes des Wochentages
    # 4: Donnerstag - 1. KW ist die Woche mit dem ersten Donnerstag im Jahr
    if date.cwday <= 4
      # Donnerstag oder kleiner: Zurueck rechnen auf Montag
      x = -8 + (date.cwday+1);
    else
      # Offset auf Folge-Woche
      x = 8 - date.cwday
    end
    # Offset an Wochentag anpassen
    x += day_number(day_string) - 1
    # Datum berechnen aus 1.1. des Jahres + Offset + Anzahl der Wochen
    date + x + ( 7*(week-1) )
  end
  def day_number(day_string)
    days = {
      'Mo' => 1,
      'Di' => 2,
      'Mi' => 3,
      'Do' => 4,
      'Fr' => 5,
      'Sa' => 6,
      'So' => 7
    }
    days[day_string]
  end

Dieser Artikel hat Dir geholfen ?
.. und Dir nerviges Ausprobieren, Suchen und Zeit erspart ?

Dann würde ich mich sehr freuen, wenn Du diese werbefreie Hilfeseite mit einer kleinen Anerkennung unterstützen würdest.
Vielen Dank !
PayPal Donate QR Code

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

2 + vierzehn =