25#include "AstCore/Constants.h"
26#include "AstCore/JulianDate.hpp"
27#include "AstCore/DateTime.hpp"
28#include "AstCore/RunTime.hpp"
29#include "AstUtil/StringView.hpp"
55constexpr static int kTimePointDefaultFormatPrecision = 6;
63AST_CORE_API
void aTimePointToUTC(
const TimePoint& time, JulianDate& jdUTC);
66AST_CORE_API
void aTimePointToTT(
const TimePoint& time, JulianDate& jdTT);
69AST_CORE_API
void aTimePointToTDB(
const TimePoint& time, JulianDate& jdTDB);
72AST_CORE_API
void aTimePointToTAI(
const TimePoint& time, JulianDate& jdTAI);
75AST_CORE_API
void aTimePointToUT1(
const TimePoint& time, JulianDate& jdUT1);
78AST_CORE_API
void aTimePointToUTC(
const TimePoint& time, DateTime& dttmUTC);
81AST_CORE_API
void aTimePointToTT(
const TimePoint& time, DateTime& dttmTT);
84AST_CORE_API
void aTimePointToTDB(
const TimePoint& time, DateTime& dttmTDB);
87AST_CORE_API
void aTimePointToTAI(
const TimePoint& time, DateTime& dttmTAI);
90AST_CORE_API
void aTimePointToUT1(
const TimePoint& time, DateTime& dttmUT1);
100AST_CORE_CAPI errc_t
aTimePointFormat(
const TimePoint& time, std::string& str,
int precision = kTimePointDefaultFormatPrecision);
148 static TimePoint FromYD(
int year,
double dayOfYear);
154 static TimePoint FromTLEYD(
double tleYD);
181 static TimePoint FromImpreciseJDTT(
double jdTT);
209 bool isNaN()
const {
return std::isnan(duration_.fractional_); }
261 return duration_.minusInSecond(other.duration_);
266 return duration_.minusInDay(other.duration_);
274 double operator-(
const TimePoint& other)
const {
return durationFrom(other); }
275 TimePoint operator+(
double second)
const {
return {integerPart(), fractionalPart() + second}; }
276 TimePoint operator-(
double second)
const {
return {integerPart(), fractionalPart() - second}; }
277 TimePoint& operator+=(
double second) { duration_.fractional_ += second;
return *
this; }
278 TimePoint& operator-=(
double second) { duration_.fractional_ -= second;
return *
this; }
279 bool operator==(
const TimePoint& other)
const {
return durationFrom(other) == 0.0; }
280 bool operator!=(
const TimePoint& other)
const {
return durationFrom(other) != 0.0; }
281 bool operator>(
const TimePoint& other)
const {
return durationFrom(other) > 0.0; }
282 bool operator<(
const TimePoint& other)
const {
return durationFrom(other) < 0.0; }
283 bool operator>=(
const TimePoint& other)
const {
return durationFrom(other) >= 0.0; }
284 bool operator<=(
const TimePoint& other)
const {
return durationFrom(other) <= 0.0; }
291 std::string
toString(
int precision = kTimePointDefaultFormatPrecision)
const
302 return {integerPart(), fractionalPart() + second};
308 AST_CORE_API
TimePoint shiftedBySecondInTDB(
double second)
const;
318inline TimePoint operator ""_utc(
const char* str,
size_t len)
320 return TimePoint::ParseUTC(
StringView(str, len));
324inline TimePoint operator ""_bjt(
const char* str,
size_t len)
326 return TimePoint::ParseBJT(
StringView(str, len));
330inline TimePoint operator ""_timepoint(
const char* str,
size_t len)
332 return TimePoint::Parse(
StringView(str, len));
long int integer
定义 MockSnopt.c:24
绝对时间点
定义 TimePoint.hpp:108
JulianDate toTAI() const
将时间点转换为儒略日数(原子时 TAI)
定义 TimePoint.hpp:249
double julianCenturyFromJ2000TT() const
计算时间点与 J2000 epoch 的时间差(儒略世纪)
定义 TimePoint.hpp:220
TimePoint shiftedBySecond(double second) const
计算时间点偏移后的新时间点,按默认时间尺度进行时间偏移
定义 TimePoint.hpp:301
static TimePoint J2000TT()
J2000.0 TT 时间点
定义 TimePoint.hpp:184
double fractionalPart() const
时间点的小数秒数部分
定义 TimePoint.hpp:206
double durationFrom(const TimePoint &other) const
计算与另一个时间点的时间差(秒数)
定义 TimePoint.hpp:260
bool isNaN() const
是否为“无数据/非法”时间点
定义 TimePoint.hpp:209
void toTT(JulianDate &jdTT) const
将时间点转换为儒略日数(地球时TT)
定义 TimePoint.hpp:225
void toTDB(JulianDate &jdTDB) const
将时间点转换为儒略日数(质心动力学时TDB)
定义 TimePoint.hpp:235
double toEpochSecond() const
将时间点转换为相对于参考历元的秒数
定义 TimePoint.hpp:255
JulianDate toTT() const
将时间点转换为儒略日数(地球时TT)
定义 TimePoint.hpp:229
double daysFromJ2000TT() const
计算时间点与 J2000 epoch 的时间差(天)
定义 TimePoint.hpp:215
bool isValid() const
是否为有效时间点
定义 TimePoint.hpp:212
int64_t integerPart() const
时间点的整数秒数部分
定义 TimePoint.hpp:203
JulianDate toTDB() const
将时间点转换为儒略日数(质心动力学时TDB)
定义 TimePoint.hpp:239
std::string toString(int precision=kTimePointDefaultFormatPrecision) const
将时间点格式化为字符串
定义 TimePoint.hpp:291
double daysFrom(const TimePoint &other) const
计算与另一个时间点的时间差(天)
定义 TimePoint.hpp:265
void toTAI(JulianDate &jdTAI) const
将时间点转换为儒略日数(原子时 TAI)
定义 TimePoint.hpp:245
double aTimePointToEpochSecond(const TimePoint &tp)
将时间点转换为相对参考历元的秒数
定义 RunTimeEpoch.cpp:27
void aTimePointToTAI(const TimePoint &time, JulianDate &jdTAI)
将时间点转换为儒略日数(原子时 TAI)
定义 TimePoint.cpp:61
errc_t aTimePointFormat(const TimePoint &time, std::string &str, int precision)
将时间点格式化为字符串
定义 TimePoint.cpp:119
void aTimePointToTDB(const TimePoint &time, DateTime &dttmTDB)
将时间点转换为日期时间(质心动力学时TDB)
定义 TimePoint.cpp:94
void aTimePointToUTC(const TimePoint &time, JulianDate &jdUTC)
将时间点转换为儒略日数(协调世界时 UTC)
定义 TimePoint.cpp:43
void aTimePointToUT1(const TimePoint &time, JulianDate &jdUT1)
将时间点转换为儒略日数(世界时 UT1)
定义 TimePoint.cpp:72
void aTimePointToTT(const TimePoint &time, JulianDate &jdTT)
将时间点转换为儒略日数(地球时TT)
定义 TimePoint.cpp:49
errc_t aTimePointParse(StringView str, TimePoint &time)
从字符串解析时间点
定义 TimePoint.cpp:138
constexpr double kSecondsPerDay
一天的秒数
定义 Constants.h:227
constexpr double kDaysPerJulianCentury
儒略世纪天数
定义 Constants.h:225
constexpr double kTTMinusTAI
地球时相对原子时的偏置[s]
定义 Constants.h:45
Unit minute
分钟,不要命名为min,容易与std::min冲突
定义 Unit.cpp:467
Unit hour
小时
定义 Unit.cpp:468