DATE2DWY vs. Schaltjahr? (CC)

16. Februar 2012 17:35

Hallo Community,

mir ist vorhin zufällig aufgefallen, dass mir die Funktion Date2DWY für den 31.12.12 als Jahr 2013 zurückgibt.
Date2DMY dagegen gibt 2012 zurück.

Das hängt nun definitv an dem Schaltjahr. Wie kann ich NAV dazu bewegen, mittels Date2DWY auch bei Schaltjahren den korrekten Wert zu ermitteln?

Code:
Enddatum := 311212D;

i := Date2DWY(Enddatum, 3);
Message('%1', i);

i := Date2DMY(Enddatum, 3);
Message('%1', i);



Client: 2009 SP1


gruß
Jörg

Re: DATE2DWY vs. Schaltjahr? (CC)

16. Februar 2012 17:51

Das ist gewollt, schau mal ins Beispiel der Hilfe zu DATE2DWY:
The date 01/01/94 corresponds to:
The day of the week: 6
The week number: 52
The year: 1993

This example shows that the system regards the date 01/01/94 as day number 6 (Saturday) in week number 52 in the year 1993.

Dein Beispiel mit 31.12.12 gehört nicht mehr zur 52. Woche des Jahres 2012, sondern schon zur ersten Woche 2013. :wink:
Ist im ersten Moment aber verwirrend, da gebe ich dir Recht.

Lösung: Falls du das anders möchtest, verwende für die Jahresangabe DATE2DMY.

mfg,
winfy

Re: DATE2DWY vs. Schaltjahr? (CC)

16. Februar 2012 18:06

also ich muss mich korrigieren. Das Problem liegt nicht am Schaltjahr sondern an der Verteilung der Tage, wenn das Jahr mitten in der Woche umbricht.


in meiner Hilfe ist das Beispiel wie folgt:

Code:
If the input date to the DATE2DWY function is in a week which spans two years, the DATE2DWY function computes the output year as the year that has more days of the given week. For example, if the input date is 010109, then the date is in a week that starts on Monday, December 29, 2008, and ends Sunday, January 4, 2009. This week has three days in 2008 and four days in 2009, so the output year is 2009.

The date 01/01/09 corresponds to:

The day of the week: 4

The week number: 1

The year: 2009

This example shows that the date 01/01/09 is regarded as day number 4 (Thursday) in week number 1 in the year 2009.


edit: @winfy, sorry hat sich mit deiner Antwort überschnitten :-P