-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjuliandate.py
More file actions
75 lines (62 loc) · 2.1 KB
/
juliandate.py
File metadata and controls
75 lines (62 loc) · 2.1 KB
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
#%% Julian day counter modules
# Taken from Enno Middleberg's site of useful astronomical python references: http://www.astro.rub.de/middelberg/python/python.html
# Adopted by Lam Hoi Ming 2019-02-14
def gd2jd(date):
# This will return the year [0] and the julian day in that year [1] as int!
yyyy = int(date[0:4])
mm = int(date[4:6])
dd = int(date[6:8])
# Do we have a leap year?
daylist=[31,28,31,30,31,30,31,31,30,31,30,31]
daylist2=[31,29,31,30,31,30,31,31,30,31,30,31]
if (yyyy%4 != 0):
days=daylist
elif (yyyy%400 == 0):
days=daylist2
elif (yyyy%100 == 0):
days=daylist
else:
days=daylist2
# Counting from January 1st as 1 (python convention)
daysum = 0
for y in range(mm - 1):
daysum = daysum + days[y]
ju_day = daysum + dd
return [yyyy,ju_day]
print('year =', yyyy, '.', 'julian day =', ju_day, '.', 'January 1st is set as 1.')
#%% Julian day to yyyyddmm format
# Task to convert a list of julian dates to gregorian dates
# description at http://mathforum.org/library/drmath/view/51907.html
# Original algorithm in Jean Meeus, "Astronomical Formulae for Calculators
# Adopted by Lam Hoi Ming 2019-02-14
def jd2gd(yyyy, ju_day):
#yyyy = int(date[0:4])
# Do we have a leap year?
daylist=[31,28,31,30,31,30,31,31,30,31,30,31]
daylist2=[31,29,31,30,31,30,31,31,30,31,30,31]
if (yyyy%4 != 0):
days=daylist
assert ju_day <= 365 # A year has 365 days only!
elif (yyyy%400 == 0):
days=daylist2
assert ju_day <= 366 # A leap year has 366 days only!
elif (yyyy%100 == 0):
days=daylist
assert ju_day <= 365 # A year has 365 days only!
else:
days=daylist2
assert ju_day <= 366 # A leap year has 366 days only!
yyyy = str(yyyy)
mm = 0
dd = ju_day
i = 0
for i in range(12) :
mm = mm + 1
if dd <= days[i]:
break
elif dd > days[i]:
dd = dd - days[i]
dd = f"{dd:02d}"
mm = f"{mm:02d}"
yyyymmdd = yyyy + mm + dd
print(yyyymmdd)