NASA Logo
Ocean Color Science Software

ocssw V2022
jdate.c
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <stdint.h>
3 #include <timeutils.h>
4 
13 int jdate(int32_t julianDay, int32_t *year, int32_t *dayOfYear) {
14 
15  int32_t month, day;
16  int32_t ja, jb, jc, jd, je, jalpha;
17 
18  jalpha = (int32_t) (((julianDay - 1867216L) - 0.25) / 36524.25);
19  ja = julianDay + 1 + jalpha - (int32_t) (0.25 * jalpha);
20 
21  jb = ja + 1524;
22  jc = (int32_t) (6680.0 + ((jb - 2439870L) - 122.1) / 365.25);
23  jd = 365 * jc + (int32_t) (0.25 * jc);
24  je = (int32_t) ((jb - jd) / 30.6001);
25 
26  day = jb - jd - (int32_t) (30.6001 * je);
27  month = je - 1;
28  if (month > 12)
29  month = month - 12;
30  *year = jc - 4715;
31 
32  if (month > 2)
33  *year = *year - 1;
34  if (*year <= 0)
35  *year = *year - 1;
36 
37  int numDaysEachMonth[24] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
38  31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
39 
40  *dayOfYear = day;
41  for (int idxMonth = 1; idxMonth < month; idxMonth++)
42  *dayOfYear = *dayOfYear + numDaysEachMonth[isleap(*year) * 12 + (idxMonth - 1)];
43 
44  return 0;
45 }
int32_t day
#define L(lambda, T)
Definition: PreprocessP.h:185
int jb
Definition: atrem_corl1.h:227
int jdate(int32_t julianDay, int32_t *year, int32_t *dayOfYear)
Takes in a julian day and mutates year and doy to contain the gregorian year and day of that gregoria...
Definition: jdate.c:13
Definition: jd.py:1
int isleap(int year)
Definition: isleap.c:3
float ja
Definition: atrem_cor.h:114
def jd(i, j, k)
Definition: jd.py:1