-
Notifications
You must be signed in to change notification settings - Fork 0
/
_GregJulg.au3
127 lines (96 loc) · 2.77 KB
/
_GregJulg.au3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
; Ferdiannd Marx - GFMSOFT - 11.10.2018 - 1.2.3
; Usage: _Dateumrechnen(DD.MM.YYYY)
;example
Global $DATE,$FinalDATE
$DATE="05.05.2005"
_DATEumrechnen($DATE)
consolewrite(FinalDATE&@crlf)
func _DATEumrechnen($DATE)
; Berechnung von gregorianischem Kalender zu julianischem Datum
; Calc from Gregorian date to julian date.
; For more information (German):
;~ http://de.wikipedia.org/wiki/Umrechnung_zwischen_julianischem_Datum_und_gregorianischem_Kalender
;~ SK - Schaltjahr beachten
;~ SK = 1 (für Schaltjahre, wenn der Monat später als März liegt (M>2))
;~ SK = 0 (sonst)
;~ Die Monatskorrektur (MK) ergibt sich aus der Tabelle:
;~ M MK Monatsname M MK Monatsname M MK Monatsname
;~ ---------------------- ---------------------- ----------------------
;~ 1 -1 Januar 5 -1 Mai 9 +2 September
;~ 2 0 Februar 6 0 Juni 10 +2 Oktober
;~ 3 -2 März 7 0 Juli 11 +3 November
;~ 4 -1 April 8 +1 August 12 +3 Dezember
;~ ##############################################################################
Local $sk=0,$mk,$LT,$LJ,$N400,$split
if StringInStr($date,".")=false Then
Return MsgBox(16,"Fehler","Das eingegebene Datum stimmt nicht.")
EndIf
;Eingehende Daten korrekt auf die Vars aufteilen
;Check incoming Data - move data into vars
$split=StringSplit($date,".")
$y=$split[3]
$m=$split[2]
$t=$split[1]
if $y/4 = floor($y/4) Then
if $m >2 Then
$sk=1
EndIf
EndIf
if $m = 1 Then $mk = -1
if $m = 2 Then $mk = 0
if $m = 3 Then $mk = -2
if $m = 4 Then $mk = -1
if $m = 5 Then $mk = -1
if $m = 6 Then $mk = 0
if $m = 7 Then $mk = 0
if $m = 8 Then $mk = 1
if $m = 9 Then $mk = 2
if $m = 10 Then $mk = 2
if $m = 11 Then $mk = 3
if $m = 12 Then $mk = 3
$LT = $t + 30*($m-1) + $sk + $mk
$LJ = $y - 1
;#########################
;~ Ab hier Restberechnungen
$n400 = $LJ/400
Local $Wert, $rest
if $n400 <> Floor($n400) Then
;Da ein Rest vorhanden ist muss dieser bestimmt werden
$Wert = Floor($n400) * 400
$rest = $LJ - $Wert
Else
;Rest ist 0
$rest = 0
EndIf
;Setze R400 aus Rest
$r400=$rest
;##########################
$n100=$r400/100
$Wert=0
$rest=0
if $n100 <> Floor($n100) Then
;Rest ermitteln
$wert = Floor($n100) * 100
$rest = $r400 - $wert
Else
$rest=0
EndIf
;Setze r100 aus Rest
$r100=$rest
;###########################
$n4 = $r100/4
$wert=0
$rest=0
if $n4 <> Floor($n4) Then
;Rest ermitteln FÜR N1
$wert=Floor($n4)*4
$rest=$r100 - $wert
Else
$rest = 0
EndIf
$n1 = $rest
$jd0=1721426
$JD = $jd0 + Floor($n400)*146097+Floor($n100)*36524+Floor($n4)*1461+$n1*365+$LT
$FinalDATE=$JD
Return $FinalDATE
EndFunc