OS2.org Site Index - Feedback - Impressum
Sprachauswahl / Choose your Language News Software Hardware Projekte Forum Tipps Links Verschiedenes
Editorial Diskussion HelpDesk Umfrage
[Forum]
in nach (Erweiterte Suche)
[Forum]
( Archiv ) ( Neues Thema )

( Zeige die Threadübersicht ) ( Zur Startübersicht )
02.07.1998
REXX Prozedur zur Datumswandlung (von: Peter Gromann, 00:00:00) ^
Ich suche eine REXX Prozedur mit der ich ein Datum, z.B. vom Format "DATE (D)" in die Entsprechende Kalenderwoche (Zahlenwert) umwandeln kann.
Das Programm, daß ich geschrieben habe arbeitet nur für das Jahr 98 korrekt. Dieses Programm arbeitet mit eine Näherung und einer entsprechenden Korrektur. Die Fehler treten dann für das Jahr 1999 auf, da dort die 1.KW schon am 28.12.98 beginnt. Ich suche also ein Programm womit ich die Umwandlung ohne Näherung berechnen kann.
Ich hoffe Ihr könnt mir schnell weiterhelfen, denn diese Korrekturbenötige ich für die Datensicherung!!!!!!!!!!
Anbei mein Programm

WOCHE = (DATE(D)/7)+(4/5)
WEEK = FORMAT(WOCHE,2,0)

Beispiel: Das aktuelle Datum vom System wird abgefragt und umgewandelt z.B 02.07.98 ist der Tag 183 und es muß als Ergebnis 27 für die 27.Kalenderwoche herauskommen.
[ Leser: 61 ]


Re: REXX Prozedur zur Datumswandlung (von: svobi, 00:00:00)
Wenn ich mich richtig erinnere ist, Irrtum vorbehalten, diejenige Woche im neuen Jahr die Erste, welche den ersten Donnerstag enthalten soll. Ich weiss die Erklaerung dazu auch nicht, aber soo habe ich es einmal gelesen.
Vielleicht steckt hier Dein Ansatz zur Loesungs?
Gruss & Glueck svobi

22.08.1998
Re: REXX Prozedur zur Datumswandlung (von: Jörg Faulhammer, 00:00:00)
/* ermittelt Wochentag eines
Datums */

Parse Arg Datum

Fehler=""

WTag.0=7
WTag.1="Samstag"
WTag.2="Sonntag"
WTag.3="Montag"
WTag.4="Dienstag"
WTag.5="Mittwoch"
WTag.6="Donnerstag"
WTag.7="Freitag"


Tag=Left(Datum,2)
Monat=Substr(Datum,4,2)
Jahr=Right(Datum,4)

Select
when Tag < 1 | Tag > 31
Then Say "Tag falsch"
when Monat < 1 | Monat >
12 Then Say "Monat falsch"
when Jahr < 1582 Then Say
"Jahr falsch"
when Jahr = 1582 & Monat <
10 Then Say "Jahr falsch"
when Jahr = 1582 & Monat =
10 & Tag < 15 Then Say "Jahr
falsch"
Otherwise Call Start
End

Return

Start:

von=Tag+31*(Monat-1)+Jahr*365
If Monat < 3 Then
von=von+Trunc((Jahr-1)/4)-Tru
nc(.75+Trunc((Jahr-1)/100)*.7
5)
Else
von=von-Trunc(.4*Monat+2.3)+T
runc(Jahr/4)-Trunc(.75+Trunc(
Jahr/100)*.75)
Days=von
Call DaysToDate

Wvon=von//7+1
Say WTag.Wvon||",
"||NTage||"."||NMonat||"."||N
Jahr||" ["||Datum||":
"||Days||"]"

Return

DaysToDate:

NJahr=Trunc(Days/365.242864)
Rest=Days//(NJahr*365)
Rest2=Rest-Trunc((NJahr-1)/4)
+Trunc(.75+Trunc((NJahr-1)/10
0)*.75)-1
NMonat=Trunc(Rest2/31)+1
NTage=Rest2-(31*(NMonat-1))+1
If NMonat > 2 | (NMonat=2 &
Tage=0) Then Do

Rest2=Rest+Trunc(.4*NMonat+2.
3)-Trunc(NJahr/4)+Trunc(.75+T
runc(NJahr/100)*.75)-1
NMonat=Trunc(Rest2/31)+1

NTage=Rest2-(31*(NMonat-1))+1
End

If NTage = 31 & (NMonat = 4 |
NMonat = 6 | NMonat = 9 |
NMonat = 11) Then Do
NTage = 1
NMonat = NMonat + 1
End

If NMonat = 2 & NTage > 28
Then Do
Regeltage=28
If NJahr//4 = 0 Then
Regeltage=Regeltage+1
If NJahr//100 = 0 Then
Regeltage=Regeltage-1
If NJahr//400 = 0 Then
Regeltage=Regeltage+1
If NTage > Regeltage Then
Do
NMonat = 3
NTage =
NTage-Regeltage
End
End

Return


( Zeige die Threadübersicht ) [ Version zum Drucken ] ( Zur Startübersicht )

Datum Thema
07.01.2017 *

*

Name: * eMail: Benachrichtigung

Mit * markierte Felder müssen ausgefüllt werden !


php.net OpenIT © 1998-2017 by WebTeam OS2.org