Due to the lapse in federal government funding, NASA is not updating this website. We sincerely regret this inconvenience.
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