AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit MonthOf

Ein Thema von SvB · begonnen am 19. Okt 2012 · letzter Beitrag vom 25. Okt 2012
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.476 Beiträge
 
Delphi 12 Athens
 
#1

AW: Problem mit MonthOf

  Alt 20. Okt 2012, 08:15
Was du machen könntest, ist erstmal über EncodeDateWeek den Anfang der Woche zu bestimmen,
dann besorgst du dir aber den letzen Tag der Woche (+6)
und zum Schluß besorgst du dir davon über MonthOf den Monat.


Oder doch nur +4, da für die Zugehörigkeitsbestimmung der Jahres ja die halbe Woche genutzt wird, also mindestens 4 Tage.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Okt 2012 um 08:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Problem mit MonthOf

  Alt 20. Okt 2012, 09:01
Man muss sich einfach nur absprechen was etwas bedeutet und das umsetzen, dann wird auch niemand überrascht. Man kann sich an allgemeingültige Konventionen halten, wenn es welche gibt, oder auch mit diesen brechen, wenn es gefordert wird. Es muss nur klar sein.

Beispiel:

Definition Jahr für die Auswertung: Ist das Jahr des 1. Tages der Kalenderwoche
Definition Monat für die Auswertung: Ist der Monat des 1. Tages der Kalenderwoche
Definition 1. Tag der Kalenderwoche: Die Kalenderwoche startet am Montag
Definition Kalenderwoche: ...

Ab in die Dokumentation und so umsetzen. Ohne das braucht man eine Menge Mate-Tee und einen Sack voll Problemkerzen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Problem mit MonthOf

  Alt 20. Okt 2012, 09:19
Oder mal so:

Delphi-Quellcode:
function JahreDerKW(const AYear, AWeekOfYear: Word; var AYear1, AYear2: Word): Boolean;
var
  Dummy: Word;
begin
  DecodeDate(EncodeDateWeek(AYear, AWeekOfYear, 1), AYear1, Dummy, Dummy);
  DecodeDate(EncodeDateWeek(AYear, AWeekOfYear, 7), AYear2, Dummy, Dummy);
  Result := AYear1 = AYear2;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Year1, Year2: Word;
begin
  if JahreDerKW(2013, 1, Year1, Year2) then
    ShowMessage(Format('KW ist in einem Jahr: %d', [Year1]))
  else
    ShowMessage(Format('KW ist in zwei Jahren: %d und %d', [Year1, Year2]));
end;
Ist das Ergebnis True, ist es ein Jahr, sonst zwei. Dann bleibt es an dir welcher dich interessiert.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Problem mit MonthOf

  Alt 20. Okt 2012, 09:57
@Popov

Das Problem tritt ja unter dem Jahr auf, da der Monat auch mitten in der Woche enden/beginnen kann.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.476 Beiträge
 
Delphi 12 Athens
 
#5

AW: Problem mit MonthOf

  Alt 20. Okt 2012, 11:22
Grade nochmal drüber nachgedacht ... das müßte doch soweit stimmen?
Delphi-Quellcode:
J := YearOf (EncodeDateWeek(Jahr, Woche, 4));
M := MonthOf(EncodeDateWeek(Jahr, Woche, 4));
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Okt 2012 um 11:24 Uhr)
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Problem mit MonthOf

  Alt 23. Okt 2012, 19:50
Das mit dem Kalender ist nicht so einfach. Den korrekten Monat einer KW zu erhalten ist so eine Sache und wie ihr beschrieben habt eigentlich gar nicht möglich, wenn die KW über zwei Monate geht.
Ich habe hierzu den Kunden noch mal gefragt wie er es denn gerne haben möchte. Wenn ich die Antwort habe, dann gebe ich noch mal über den aktuellen Status Bescheid.

In irgendeinem Excel-Forum oder Blog gabs eine Funktion, die wir umgeschrieben haben.
Delphi-Quellcode:
function GetMonatFromKW(Jahr, KW: String): String;
var
  tage: Int16;
  Date, Date2: TDate;
  wochentag, wochentag2: word;
  year, month, day: word;
begin
  // Was für ein tag ist der 1.1.xxxx
  Date := StrToDate('01.01.' + Jahr);
  wochentag := DayOfWeek(Date);
  // Was für ein Tag ist der 31.12.xxxx
  Date2 := StrToDate('31.12.' + Jahr);
  wochentag2 := DayOfWeek(Date2);
  // Wenn der erste oder letzte Tag eines Jahres ein Donnerstag ist
  // dann hat das Jahr 53 KWs
  if (wochentag = 5) OR (wochentag2 = 5) then begin
    // Alle außer KW 53 werde ignoriert und normal berechnet
    if KW = '53then begin
      Result := '12';
      Exit;
    end;
  end;
  // Anzahl der Tage seid Anfang des Jahres
  tage := StrToInt(KW) * 7;
  tage := tage - ((wochentag));
  // Zum Datum hin rechnen
  Date := Date + tage;
  // Monat auslesen und zurückgeben
  DecodeDate(Date, year, month, day);
  Result := inttostr(month);
end;
Leider funktioniert diese Berechnung aber auch nicht ganz, ich hätte bei manchen Ergebissen etwas anderes gesagt.
Warten wir mal ab, was der Kunde sagt.
Sven

Alle sagen, das geht nicht. Da kam einer, der wusste das nicht und hat es gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Problem mit MonthOf

  Alt 23. Okt 2012, 19:52
Klingt vernünftig, egal wie er entscheidet, Du bist aus dem Schneider ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Problem mit MonthOf

  Alt 23. Okt 2012, 20:05
Ich habe auch noch folgende Infos gefunden:
http://de.wikipedia.org/wiki/Kalende...#Kalenderwoche
http://de.wikipedia.org/wiki/ISO_8601
http://de.wikipedia.org/wiki/DIN_1355-1
http://guest.engelschall.com/~sb/dow...mg/DIN1355.jpg

Hier gibt es keine eindeutige Erklärung ob eine KW einem Monat zugeordnet werden kann. Es ist nur das Jahresende, bzw. der Jahresanfang geregelt.
Sven

Alle sagen, das geht nicht. Da kam einer, der wusste das nicht und hat es gemacht.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz