AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Kalenderwochenberechnung USA

Ein Thema von sirarcher · begonnen am 25. Mai 2009 · letzter Beitrag vom 27. Mai 2009
Antwort Antwort
sirarcher

Registriert seit: 7. Mär 2007
22 Beiträge
 
#1

Kalenderwochenberechnung USA

  Alt 25. Mai 2009, 15:53
Hi Leute,

irgendwie stelle ich mich heute zu blöd an, daher hoffe ich das mir einer von euch helfen kann.

Ich weiß das ich zB. mit der JclDateTime -> Funktion "ISOWeekNumber" oder

mit "WeekOfTheYear"

die Kalenderwoche berechnen kann. Und zwar die ISO 8601 gültige.

Ich würde jedoch die Amerikanische benötigen. (Wochenbegin Sonntag, Erste Sonntag = KW 1)

In VB geht dies mit KW = Format(Datum, "ww", VbSunday, VbFirstJan1)

Weiß jemand wie ich dies in Delphi bewerkstellige?

Danke für jede Hilfe!


PS: Als Beispieldaten:

01.01.1994 --> SA --> EU (KW 52)
01.01.1994 --> SA --> USA (KW 52)

01.02.1994 --> SO --> EU (KW 52)
01.02.1994 --> SO --> USA (KW 1)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.535 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Kalenderwochenberechnung USA

  Alt 25. Mai 2009, 16:20
Ohne groß geprüft zu haben: http://delphi.about.com/cs/adptips20...ltip0300_2.htm
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
sirarcher

Registriert seit: 7. Mär 2007
22 Beiträge
 
#3

Re: Kalenderwochenberechnung USA

  Alt 26. Mai 2009, 07:00
Hi,

danke für den Tipp, jedoch ist die Berechnung dort "falsch". Sie liefert mir beim Prüfen von den zwei Testdati leider jedesmal die KW 1 zurück. Müsste 1x KW52 und 1x KW1 bei "US" zurückliefern.

Trotzdem Danke! Vielleicht weiß noch jemand was? Werde auf jedenfall weiter suchen bzw. grübeln, vielleicht stehe ich ja heute nicht auf der "Leitung" ...
  Mit Zitat antworten Zitat
HeinzJ

Registriert seit: 17. Aug 2007
Ort: Bremen
84 Beiträge
 
Delphi 2007 Architect
 
#4

Re: Kalenderwochenberechnung USA

  Alt 26. Mai 2009, 07:35
Hat mir bei ähnlichem geholfen: http://www.merlyn.demon.co.uk/weekinfo.htm
  Mit Zitat antworten Zitat
sirarcher

Registriert seit: 7. Mär 2007
22 Beiträge
 
#5

Re: Kalenderwochenberechnung USA

  Alt 26. Mai 2009, 08:40
Hi,

danke für eure Hilfe. (bzw. die Links)

Habe es nun so glaube ich gelöst:

Delphi-Quellcode:
function GetWeekNumberUS(const aDateTime: TDateTime): string;
var
  Y,M,D:Word;
  dtTmp:TDateTime;
  dtLastYear: TDateTime;
  strTempResult: string;
begin
  DecodeDate(aDateTime,Y,M,D) ;
  dtTmp := EnCodeDate(Y,1,1) ;
  strTempResult := IntToStr((Trunc(aDateTime-dtTmp)+(DayOfWeek(dtTmp)-1)) DIV 7);
  //Wenn Result = 0 dann ist es die letzte Kalenderwoche vom "Vorjahr".
  if strTempResult = '0then begin
    //Jahr um 1 verringern, da man im "letzten" Jahr die letzte Woche ermitteln muss.
    Y := Y - 1;
    //31.12 vom Vorjahr ermitteln
    dtLastYear := EnCodeDate(Y,12,31) ;
    //1.1. vom Vorjahr ermitteln
    dtTmp := EnCodeDate(Y,1,1) ;
    //KW Berechnung
    strTempResult := IntToStr((Trunc(dtLastYear-dtTmp)+(DayOfWeek(dtTmp)-1)) DIV 7);
  end;
  //Result ist genau die Kalenderwoche
  Result := strTempResult;

  //Oder wenn man will mit Jahreszahl formatiert
  if StrToInt(strTempResult) < 10 then strTempResult := '0' + strTempResult;
  Result := FormatDateTime('yyyy',dtTmp) + 'W' + strTempResult;
end;
Nochmals DANKE! Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Kalenderwochenberechnung USA

  Alt 26. Mai 2009, 20:10
Nach gibt es eine 53. Kw immer dann, wenn der 1.1.d.J. oder der 31.12.d.J. auf einen Donnerstag fallen.
Wie ist das beim US-Kalender?
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#7

Re: Kalenderwochenberechnung USA

  Alt 27. Mai 2009, 08:14
Hallo sirarcher,

ich empfehle dringend, die Variable strTempResult und den Rückgabewert als int zu behandeln (das erspart auch einige IntToStr-Umwandlungen). Du willst eine Zahl bestimmen, dann arbeite doch auch damit (und nur damit). In den Fällen, in denen du wirklich einen String brauchst, kannst du an der betreffenden Stelle umwandeln; das ist eine Frage der konkreten Anforderung, aber nicht eine Frage der Berechnung.

Wenn du das häufiger brauchst, dann empfiehlt sich eher eine Variante GetWeekNumberUSAsString, die nur die beiden Formatierungen vornimmt und die Berechnung in function GetWeekNumberUS(): int; belässt.

Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.
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