Fehler bei KW-Berechnung für Dezember 2007?

von Olaf Rabbachin » Donnerstag, 5. Juli 2007



Huhu!

Ich wundere mich gerade über das Ergebnis von ...
Format(#2007-12-31#, "ww", vbMonday, vbFirstFourDays)
... Das gibt mir die <53> zurück, obwohl es eigentlich eine <1> sein
sollte.
Gleiches gilt übrigens auch für ...
Format(#2007-12-31#, "ww", vbSunday, vbFirstJan1)
... (= US-Datum).
In beiden Fällen fällt der 31.12.2007 also gemäß ISO8601 faktisch in die
KW1/2008.

Bin ich jetzt im falschen Film, oder ist Format() etwa doch nicht
ISO-konform!?

Gruß,
Olaf
--
My .02: www.Resources.IntuiDev.com



Re: Fehler bei KW-Berechnung für Dezember 2007?

von Jürgen Schulz » Donnerstag, 5. Juli 2007



> Huhu!

selber Huhu :-)

Hatte auch das Problem und folgendes im Netz gefunden und eingebaut:

--------------
Public Function Kalenderwoche(Datum As Date)
Kalenderwoche = Format(Datum, "ww", vbMonday, vbFirstFourDays)
If Kalenderwoche > 52 Then
If Format(Datum + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
Kalenderwoche = 1
End If
End Function
---------------

Jürgen





Re: Fehler bei KW-Berechnung für Dezember 2007?

von Dieter Liessmann » Donnerstag, 5. Juli 2007



Hi Olaf,



Stimmt!!

Guckst Du:
---Code Start---
Public Function GetWeek(Optional ByVal XDatum As Variant) As String
'Gibt Ein Datum als "ww\jjjj" String zurück
'Wenn eine Wochennummer in ein unterschiedliches Jahr fällt, so wird dies
berücksichtigt
'd.h. 31.12.2002 = 01\2003 bzw. 1.1.1999 = 53\1998
Dim x As Variant
Dim y As Variant
Dim Z As Variant
GetWeek = ""
If Not IsDate(XDatum) Then XDatum = Date
XDatum = CDate(XDatum)
x = Year(XDatum)
y = Month(XDatum)
Z = Format(XDatum, "ww", vbMonday, vbFirstFourDays)
If Z > 52 Then
If Format(XDatum + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then Z = 1
End If
If y = 12 And Z < 40 Then x = x + 1
If y = 1 And Z > 10 Then x = x - 1
GetWeek = Right("00" & Z, 2) & "\" & Right("0000" & x, 4)
End Function


--
So long
Dieter




Re: Fehler bei KW-Berechnung für Dezember 2007?

von Gunter Avenius » Donnerstag, 5. Juli 2007



Huhu Olaf,

Olaf Rabbachin schrieb folgendes:

letzter Absatz incl. Verweis auf KB Artikel in der Access-FAQ
(www.donkarl.com?FAQ2.25)

--
Gruß
Gunter
_________________________________________________
10. Access-Entwickler-Konferenz (AEK)
Nürnberg 6./7.10.2007 und 20./21.10.2007
http://www.donkarl.com/?AEK
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de




Re: Fehler bei KW-Berechnung für Dezember 2007?

von Dieter Liessmann » Donnerstag, 5. Juli 2007



Hi Olaf,



nur um deine Schande noch zu steigern ;-P

http://www.donkarl.com/FAQ/FAQ2Allgemein.htm #2.25

Wobei hier gleich noch ein gemecker an Karl:
Der Verweis auf die Standardfunktion DatePart und Format sollte eigentlich
gleich raus, da mit den Funktionen eben nicht die korrekte KW berechnet
wird!


--
So long
Dieter




Re: Fehler bei KW-Berechnung für Dezember 2007?

von Olaf Rabbachin » Donnerstag, 5. Juli 2007



Hi,




danke auch. :-)


merci. Habe das jetzt ein wenig umgemünzt, weil ich's nicht nur für
Deutschland benötige:

Public Function CalendarWeek( _
ByVal dte As Date, _
Optional ByVal FirstDayOfWeek As VbDayOfWeek = vbMonday, _
Optional ByVal FirstWeekOfYear As VbFirstWeekOfYear =
vbFirstFourDays)
CalendarWeek = Format(dte, "ww", FirstDayOfWeek, FirstWeekOfYear)
If CalendarWeek > 52 Then
If Format(dte + 7, "ww", FirstDayOfWeek, FirstWeekOfYear) = 2 Then
CalendarWeek = 1
End If
End Function

(-> 2 Zeilenumbrüche)

Gruß,
Olaf
--
My .02: www.Resources.IntuiDev.com



Re: Fehler bei KW-Berechnung für Dezember 2007?

von Olaf Rabbachin » Donnerstag, 5. Juli 2007



Hi,




war klar. :-)

Gruß,
Olaf
--
My .02: www.Resources.IntuiDev.com



Re: Fehler bei KW-Berechnung für Dezember 2007?

von Olaf Rabbachin » Donnerstag, 5. Juli 2007



Hi,




warum eigentlich hasse ich das ganze Datumsgeraffel ..? :-)

Gruß,
Olaf
--
My .02: www.Resources.IntuiDev.com



If you have any questions, you can contact us: admin#mofeel.net     Spam Report