Autor
|
Thema: Erster Tag (Montag) von KW01 des aktuellen Jahres (1243 mal gelesen)
|
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 08. Jan. 2015 11:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, Kann mir jemand weiter helfen. Ich bin auf der Suche wie ich via CATScript den ersten Wochentag des aktuellen Jahres bekomme. Das heißt Montag von KW01 Ich brauche das für Berechnungen mit Wochentagen und Kalenderwochen Beispiel 2015 ------------- Der 01.01.2015 ist ein Donnerstag. Wochentag = WeekdayName(Weekday("01.01.2015"), False) Da ist aber die KW01 bereits 4 Tage alt Folglich beginnt die KW01 von 2015 rein rechnerisch bereits am 29.12.2014 (1. Montag) und ich kann immer +7 rechnen um mit Kalenderwochen zu arbeiten. genau diesen 1. Montag des aktuellen Jahres brauche ich als Variable (wie erwähnt CATScript) Denn das verschiebt sich bekanntlich von Jahr zu Jahr um eins + Schaltjahr Ich hoffe Ihr versteht was ich meine. Viele Grüße Hokay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 08. Jan. 2015 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Servus Was willst du mit dem Tag? Versuch es mal so: Code: Sub CATMain()Dim oYear As String oYear = "2015" MsgBox FirstMondayInYear(oYear) End Sub Function FirstMondayInYear(oYear As String) As Date
Dim odate As Date odate = CDate("01.01." & oYear) If Weekday(odate) <> 2 Then FirstMondayInYear = DateAdd("d", 9 - Weekday(odate), odate) Else FirstMondayInYear = odate End If End Function
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 08. Jan. 2015 16:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, vielen Dank für deine schnelle Antwort. Aber: das funktioniert leider noch nicht ganz korrekt. Denn manche Jahre fangen mit KW01 an (2004, 2007, 2008, 2009, 2013, 2014, 2015, 2018, 2019, 2020, 2024, ...) und manche mit KW52 bzw. KW53 des Vorjahres (2005, 2006, 2010, 2011, 2012, 2016, 2017, 2021, 2022, 2023, ...) Das sind auch nicht immer irgendwie 3er Sprünge siehe 2016, 2017 oder 2005, 2006, Für mich ist da keine Logik erkennbar Kennt sich jemand mit dieser Logik aus und könnte mir den Script noch ein wenig anpassen? Ich brauche immer den Montag von KW01 Der kann auch ab und zu im Vorjahr liegen. Bitte helft mir! Liebe Grüße Hokay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 08. Jan. 2015 16:27 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 08. Jan. 2015 16:32 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Servus Was willst du nun mit KW1? Willst du nun den ersten Montag im Jahr oder die KW1? Zitat: Die Kalenderwoche ist nach ISO 8601 so definiert: 1. Kalenderwochen haben 7 Tage, beginnen an einem Montag und werden über das Jahr fortlaufend nummeriert. 2. Die Kalenderwoche 1 eines Jahres ist diejenige, die den ersten Donnerstag enthält.
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 08. Jan. 2015 16:50 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 08. Jan. 2015 17:10 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Servus Schau mal hier. Damit solltest du dir was zusammen schustern lassen (zB beginnend vom 4. Januar -> Wochentag ermitteln -> etwa rechnen) Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 08. Jan. 2015 17:58 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
|
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 08. Jan. 2015 18:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, Hallo Zusammen, ich habe dem von Dir erhaltenen Script um eine Zeile ergänzt (18) So passt es zumindest immer für den ersten Montag des Jahres. ------------------------------------------------------------- Sub CATMain() Dim oYear As String oYear = Year(Date) MsgBox FirstMondayInYear(oYear) End Sub Function FirstMondayInYear(oYear As String) As Date
Dim odate As Date odate = CDate("01.01." & oYear) If Weekday(odate) <> 2 Then FirstMondayInYear = DateAdd("d", 9 - Weekday(odate), odate) If Weekday(odate) = 1 Then FirstMondayInYear = FirstMondayInYear - 7 Else FirstMondayInYear = odate End If End Function ------------------------------------------------------------- den Rest, mit dem Mo. immer der ersten Woche des Jahres (teilweise im Vorjahr) kann ich mir auch selbst noch dazu basteln. (Ich denke, das ist so speziell, dass es kaum jemand braucht) vielleicht poste ich's auch noch Vielen Dank(!!!) und viele Grüße Hokay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 08. Jan. 2015 18:45 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, probier mal Code:
Format(Date, "ww", vbUseSystemDayOfWeek, vbUseSystem)
Der Befehl ergibt bei den letzten Tagen des Jahres gelegentlich einen falschen Wert, nämlich 53, zB Code:
Format(DateSerial(2003, 12, 29), "ww", vbUseSystemDayOfWeek, vbUseSystem)
Wenn's nicht stört ... Ansonsten müssten die Ergebnisse stimmen. Tschau, Joe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |