Added DateTime struct and method to split julian
parent
f4ed53c4e7
commit
3ecdfaec99
31
Julian.cpp
31
Julian.cpp
|
@ -313,3 +313,34 @@ double Julian::ToGreenwichSiderealTime() const {
|
||||||
double Julian::ToLocalMeanSiderealTime(const double& lon) const {
|
double Julian::ToLocalMeanSiderealTime(const double& lon) const {
|
||||||
return fmod(ToGreenwichSiderealTime() + lon, Globals::TWOPI());
|
return fmod(ToGreenwichSiderealTime() + lon, Globals::TWOPI());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Julian::GetDateTime(struct DateTimeComponents* datetime) const {
|
||||||
|
|
||||||
|
double jdAdj = GetDate() + 0.5;
|
||||||
|
int Z = (int) jdAdj;
|
||||||
|
double F = jdAdj - Z;
|
||||||
|
|
||||||
|
int A = 0;
|
||||||
|
|
||||||
|
if (Z < 2299161) {
|
||||||
|
A = static_cast<int>(Z);
|
||||||
|
} else {
|
||||||
|
int a = static_cast<int>((Z - 1867216.25) / 36524.25);
|
||||||
|
A = static_cast<int>(Z + 1 + a - static_cast<int>(a / 4));
|
||||||
|
}
|
||||||
|
|
||||||
|
int B = A + 1524;
|
||||||
|
int C = static_cast<int>((B - 122.1) / 365.25);
|
||||||
|
int D = static_cast<int>(365.25 * C);
|
||||||
|
int E = static_cast<int>((B - D) / 30.6001);
|
||||||
|
|
||||||
|
datetime->hours = static_cast<int>(F * 24.0);
|
||||||
|
F -= datetime->hours / 24.0;
|
||||||
|
datetime->minutes = static_cast<int>(F * 1440.0);
|
||||||
|
F -= datetime->minutes / 1440.0;
|
||||||
|
datetime->seconds = F * 86400.0;
|
||||||
|
|
||||||
|
datetime->days = B - D - static_cast<int>(30.6001 * E);
|
||||||
|
datetime->months = E < 14 ? E - 1 : E - 13;
|
||||||
|
datetime->years = datetime->months > 2 ? C - 4716 : C - 4715;
|
||||||
|
}
|
||||||
|
|
11
Julian.h
11
Julian.h
|
@ -32,6 +32,17 @@ public:
|
||||||
~Julian() {
|
~Julian() {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct DateTimeComponents {
|
||||||
|
int years;
|
||||||
|
int months;
|
||||||
|
int days;
|
||||||
|
int hours;
|
||||||
|
int minutes;
|
||||||
|
double seconds;
|
||||||
|
};
|
||||||
|
|
||||||
|
void GetDateTime(struct DateTimeComponents* datetime) const;
|
||||||
|
|
||||||
time_t ToTime() const;
|
time_t ToTime() const;
|
||||||
double ToGreenwichSiderealTime() const;
|
double ToGreenwichSiderealTime() const;
|
||||||
double ToLocalMeanSiderealTime(const double& lon) const;
|
double ToLocalMeanSiderealTime(const double& lon) const;
|
||||||
|
|
Loading…
Reference in New Issue