Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Erster Tag (Montag) von KW01 des aktuellen Jahres

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Erster Tag (Montag) von KW01 des aktuellen Jahres (1243 mal gelesen)
Hokay
Mitglied



Sehen Sie sich das Profil von Hokay an!   Senden Sie eine Private Message an Hokay  Schreiben Sie einen Gästebucheintrag für Hokay

Beiträge: 143
Registriert: 27.07.2004

Win7-Enterprice
Catia V5 R24 SP1

erstellt am: 08. Jan. 2015 11:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 08. Jan. 2015 12:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hokay 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Hokay an!   Senden Sie eine Private Message an Hokay  Schreiben Sie einen Gästebucheintrag für Hokay

Beiträge: 143
Registriert: 27.07.2004

Win7-Enterprice
Catia V5 R24 SP1

erstellt am: 08. Jan. 2015 16:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Hokay an!   Senden Sie eine Private Message an Hokay  Schreiben Sie einen Gästebucheintrag für Hokay

Beiträge: 143
Registriert: 27.07.2004

Win7-Enterprice
Catia V5 R24 SP1

erstellt am: 08. Jan. 2015 16:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

... Ähm, noch was.
Der Script hat auch noch einen weiteren Fehler
Er trifft auch nicht immer den ersten Montag des Jahres.
siehe 2006, 2012, 2017, ...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 08. Jan. 2015 16:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hokay 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Hokay an!   Senden Sie eine Private Message an Hokay  Schreiben Sie einen Gästebucheintrag für Hokay

Beiträge: 143
Registriert: 27.07.2004

Win7-Enterprice
Catia V5 R24 SP1

erstellt am: 08. Jan. 2015 16:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hey
vielen Dank, für die tolle Erklärung.

Ich brauche immer den Montag von KW1

Das ist ja das Problem!
Der liegt ab und zu im Vergangenem Jahr

Viele Grüße Hokay

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 08. Jan. 2015 17:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hokay 10 Unities + Antwort hilfreich

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 ツ



Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

NX 10
Win 7

erstellt am: 08. Jan. 2015 17:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hokay 10 Unities + Antwort hilfreich


ermittelnvonmontageinKw1DINEN28601.zip

 
In Excel würde das so funktionieren, A2 = das Jahr
=DATUM(A2;1;4)+1*7-7-REST(DATUM(A2;1;2);7)

kann man sicher umstricken für Catia  aber ich habe noch Catiafreie Zeit 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hokay
Mitglied



Sehen Sie sich das Profil von Hokay an!   Senden Sie eine Private Message an Hokay  Schreiben Sie einen Gästebucheintrag für Hokay

Beiträge: 143
Registriert: 27.07.2004

Win7-Enterprice
Catia V5 R24 SP1

erstellt am: 08. Jan. 2015 18:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von joehz an!   Senden Sie eine Private Message an joehz  Schreiben Sie einen Gästebucheintrag für joehz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hokay 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz