Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datum zu KW Normierung (https://www.delphipraxis.net/173354-datum-zu-kw-normierung.html)

ibp 19. Feb 2013 14:49

Datum zu KW Normierung
 
Hallo, stehe gerade ziemlich auf dem Schlauch, das verflixte Jahr 2012 macht mir zu schaffen. Hintergrund das Jahr hat 2 x die KW 52 und 2 x KW 1

Ich suche eine mathematische Berechnung anhand der ich mittels eines Datums aus einem Bereich die Nummer 1...54 zuordnen kann.

Der Bereich kann von 1 Woche bis max. 1 Jahr betragen.

also nehmen wir an es ist der Bereich 5.2.2013 bis 29.3.2013 gewählt worden...

5.2. ist die KW 6 diese hat dann die Zuordnung 1
...
29.3. ist die KW 13 hat dann die Zuordnung 8

So weit so gut. Wenn ich nun das Jahr 2012 betrachte und den Zeitraum 1.1.2012-31.12.2012 wähle:

1.1.2012 KW 52 > 1
...
31.12.2012 KW 1 > 54


hat da jemand eine Idee?

Meine bisherige war eine Liste zu generieren anhand der die Zuordnung identifiziert wurde und zwar so...
liste[1..54] := YearOf(Date)*10000 + MonthOf(Date)*100 + WeekOf(Date)

das schlägt aber immer dann fehl wenn KW in verschiedenen Monaten vorhanden sind.

KarstenK 19. Feb 2013 14:56

AW: Datum zu KW Normierung
 
function WeekOf(const AValue: TDateTime): Word; {ISO 8601}

Sehe gerade hast Du ja verwendet. Verstehe aber dein Problem jetzt nicht wirklich.

knochen 19. Feb 2013 14:57

AW: Datum zu KW Normierung
 
Zitat:

Zitat von ibp (Beitrag 1204321)
Hallo, stehe gerade ziemlich auf dem Schlauch, das verflixte Jahr 2012 macht mir zu schaffen. Hintergrund das Jahr hat 2 x die KW 52 und 2 x KW 1

Das stimmt nicht.

ibp 19. Feb 2013 14:59

AW: Datum zu KW Normierung
 
Zitat:

Zitat von knochen (Beitrag 1204324)
Zitat:

Zitat von ibp (Beitrag 1204321)
Hallo, stehe gerade ziemlich auf dem Schlauch, das verflixte Jahr 2012 macht mir zu schaffen. Hintergrund das Jahr hat 2 x die KW 52 und 2 x KW 1

Das stimmt nicht.

wenn du es mit einer Formel berechnest schon.

ibp 19. Feb 2013 15:06

AW: Datum zu KW Normierung
 
Zitat:

Zitat von KarstenK (Beitrag 1204323)
function WeekOf(const AValue: TDateTime): Word; {ISO 8601}

Sehe gerade hast Du ja verwendet. Verstehe aber dein Problem jetzt nicht wirklich.

konnte es jetzt noch ein wenig einkreisen...da es ja nun doppelte KW gibt musste ich mir nun noch etwas dazu merken, hatte dabei aber zu kurz gedacht.
Also:
4.11.2012 ergibt 20121144 dem Wert ist der Rank 45 zugeordnet

Aber

29.10.2012 ergibt 20121044 da er ebenfalls in der 44 KW ist wird aber hier nicht gefunden, weil 20121144 in meiner Tabelle festgelegt wurde... :wall:

KarstenK 19. Feb 2013 15:35

AW: Datum zu KW Normierung
 
Hallo,

Aus meiner Sicht liefert weekof die gewünschte KW und die Liste ist nicht notwendig.
Du sprichts auch von einem Bereich.

Kannst Du in deiner Problembeschreibung einen Schritt zurück machen und sagen, was Du lösen möchtes.

ibp 19. Feb 2013 15:43

AW: Datum zu KW Normierung
 
Zitat:

Zitat von KarstenK (Beitrag 1204339)
Hallo,

Aus meiner Sicht liefert weekof die gewünschte KW und die Liste ist nicht notwendig.
Du sprichts auch von einem Bereich.

Kannst Du in deiner Problembeschreibung einen Schritt zurück machen und sagen, was Du lösen möchtes.

mit weekof(1.1.2012) erhalte ich 52
mit weekof(25.12.2012) erhalte ich 52

damit bekomme ich keine genaue Zuordnung hin, da es auch nicht hinreichend ist, den Monat als Erkennungsmerkmal mit dazu zu nehmen.

Im Endeffekt brauche ich eine Funktion die mir einen bestimmten Rank zurückgibt anhand eines Datums (Startdatum <= Datum <= Enddatum) der beginnt mit 1 beim Startdatum und geht bis maximal 54.

Union 19. Feb 2013 16:30

AW: Datum zu KW Normierung
 
Als "Zusatzschlüssel" musst Du das Jahr verwenden, in dem der größte Teil der ermittelte Woche liegt. Die Woche des 1. Jan 2012 war ja noch die KW 2011/52 da dieser Tag ein Sonntag war und bei einem definierten Wochenbeginn am Montag lagen eben 6 von 7 Tagen im Jahr 2011.

ibp 19. Feb 2013 16:50

AW: Datum zu KW Normierung
 
Zitat:

Zitat von Union (Beitrag 1204361)
Als "Zusatzschlüssel" musst Du das Jahr verwenden, in dem der größte Teil der ermittelte Woche liegt. Die Woche des 1. Jan 2012 war ja noch die KW 2011/52 da dieser Tag ein Sonntag war und bei einem definierten Wochenbeginn am Montag lagen eben 6 von 7 Tagen im Jahr 2011.

dann müsste ich aber jedes mal, bei jeder Abfrage und das sind einige, analysieren ob das nun ein Datum in der Nähe der Jahresgrenze ist. und dann entsprechend entscheiden...

Am liebsten wäre mir eine mathematische eindeutige Zuordnung ohne viel wenn und aber...

p80286 19. Feb 2013 16:53

AW: Datum zu KW Normierung
 
Das mit dem Rank ist mir etwas undurchsichtig.
Irgendwie scheint es je eben nicht um die x.KW des Jahres y zu gehen.

Zitat:

5.2. ist die KW 6 diese hat dann die Zuordnung 1
...
29.3. ist die KW 13 hat dann die Zuordnung 8
Das versteh ich überhaupt nicht.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz