29 lines
654 B
C++
29 lines
654 B
C++
#include <cmath>
|
|
#include "nr.h"
|
|
using namespace std;
|
|
|
|
void NR::caldat(const int julian, int &mm, int &id, int &iyyy)
|
|
{
|
|
const int IGREG=2299161;
|
|
int ja,jalpha,jb,jc,jd,je;
|
|
|
|
if (julian >= IGREG) {
|
|
jalpha=int((DP(julian-1867216)-0.25)/36524.25);
|
|
ja=julian+1+jalpha-int(0.25*jalpha);
|
|
} else if (julian < 0) {
|
|
ja=julian+36525*(1-julian/36525);
|
|
} else
|
|
ja=julian;
|
|
jb=ja+1524;
|
|
jc=int(6680.0+(DP(jb-2439870)-122.1)/365.25);
|
|
jd=int(365*jc+(0.25*jc));
|
|
je=int((jb-jd)/30.6001);
|
|
id=jb-jd-int(30.6001*je);
|
|
mm=je-1;
|
|
if (mm > 12) mm -= 12;
|
|
iyyy=jc-4715;
|
|
if (mm > 2) --iyyy;
|
|
if (iyyy <= 0) --iyyy;
|
|
if (julian < 0) iyyy -= 100*(1-julian/36525);
|
|
}
|