🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
Date.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include <string>
25
26AST_NAMESPACE_BEGIN
27
28
42class Date;
43
46AST_CORE_CAPI const char* aMoonFullName(int month);
47
50AST_CORE_CAPI const char* aMoonShortName(int month);
51
54AST_CORE_CAPI const char* aWeekDayFullName(int wday);
55
58AST_CORE_CAPI const char* aWeekDayShortName(int wday);
59
61AST_CORE_CAPI bool aIsLeapYear(int year);
62
66AST_CORE_CAPI int aDaysInMonthByYear(int month, int year);
67
71AST_CORE_CAPI int aDaysInMonthByLeap(int month, bool isLeapYear);
72
74AST_CORE_CAPI int aDayOfYear(const Date& date);
75
79AST_CORE_CAPI int aDayOfWeek(const Date& date);
80
81
83AST_CORE_CAPI void aYDToDate(int year, int days, Date& date);
84
86AST_CORE_CAPI void aDateToYD(const Date& date, int& year, int& days);
87
89AST_CORE_CAPI void aDateNormalize(Date& date);
90
91
92
94AST_CORE_CAPI int aDateToJDAtNoon(const Date& date);
95
97AST_CORE_CAPI void aJDToDateAtNoon(int jd, Date& date);
98
100AST_CORE_CAPI ImpreciseJD aDateToJD(const Date& date);
101
106AST_CORE_CAPI void aJDToDate(ImpreciseJD jd, Date& date, double* secInDay=nullptr);
107
108
110AST_CORE_CAPI int aDateToMJD(const Date& date);
111
113AST_CORE_CAPI void aMJDToDate(int mjd, Date& date);
114
116AST_CORE_API std::string aDateToString(const Date& date);
117
119class Date
120{
121public:
122
124 enum EMonth{
125 eJAN = 1, eFEB, eMAR, eAPR, eMAY, eJUN,
126 eJUL = 7, eAUG, eSEP, eOCT, eNOV, eDEC
127 };
128
131 eSUN = 0, eMON, eTUE, eWED, eTHU, eFRI, eSAT
132 };
133
134public:
136 static Date FromJDAtNoon(int jd){
137 Date date;
138 aJDToDateAtNoon(jd, date);
139 return date;
140 }
141
143 static Date FromYMD(int year, int month, int day){
144 return {year, month, day};
145 }
147 static Date FromYD(int year, int days){
148 Date date;
149 aYDToDate(year, days, date);
150 return date;
151 }
152
153public:
154 int year() const{return year_;}
155 int& year(){return year_;}
156 int month() const{return month_;}
157 int& month(){return month_;}
158 int day() const{return day_;}
159 int& day(){return day_;}
160
161 void setYear(int year){year_ = year;}
162 void setMonth(int month){month_ = month;}
163 void setDay(int day){day_ = day;}
164public:
166 const char* monthFullName() const{
167 return aMoonFullName(month_);
168 }
170 const char* monthShortName() const{
171 return aMoonShortName(month_);
172 }
174 const char* weekDayFullName() const{
175 return aWeekDayFullName(dayOfWeek());
176 }
178 const char* weekDayShortName() const{
179 return aWeekDayShortName(dayOfWeek());
180 }
182 int dayOfWeek() const{
183 return aDayOfWeek(*this);
184 }
185
188 int dayOfYear() const{
189 return aDayOfYear(*this);
190 }
191
193 bool isLeapYear() const{
194 return aIsLeapYear(year_);
195 }
196
198 int dayInMonth() const{
199 return aDaysInMonthByYear(month_, year_);
200 }
201
203 int toJDAtNoon() const{
204 return aDateToJDAtNoon(*this);
205 }
207 double toJD() const{
208 return aDateToJD(*this);
209 }
210
212 double toMJD() const{
213 return aDateToMJD(*this);
214 }
215
217 void fromJDAtNoon(int jd){
218 aJDToDateAtNoon(jd, *this);
219 }
221 void fromYMD(int year, int month, int day){
222 year_ = year;
223 month_ = month;
224 day_ = day;
225 }
227 void fromYD(int year, int days){
228 aYDToDate(year, days, *this);
229 }
231 void toYD(int& year, int& days) const{
232 aDateToYD(*this, year, days);
233 }
234
236 void normalize(){
237 aDateNormalize(*this);
238 }
239
241 Date normalized() const {
242 Date d = *this;
244 return d;
245 }
246public:
247 std::string toString() const{
248 return aDateToString(*this);
249 }
250public:
251 int year_;
252 int month_;
253 int day_;
254};
255
257A_ALWAYS_INLINE Date aMJDToDate(int mjd){
258 Date date;
259 aMJDToDate(mjd, date);
260 return date;
261}
262
263
264A_ALWAYS_INLINE int aDateToMJD(int year, int month, int day){
265 return aDateToMJD({year, month, day});
266}
267
271AST_NAMESPACE_END
272
Unit day
定义 Unit.cpp:430
日期
定义 Date.hpp:120
int aDayOfWeek(const Date &date)
获取日期是这一周的第几天
定义 Date.cpp:139
void normalize()
规范化日期对象,将日期调整为有效日期
定义 Date.hpp:236
int aDayOfYear(const Date &date)
获取日期是这一年的第几天,从1开始计数
定义 Date.cpp:122
int dayInMonth() const
获取该月的天数
定义 Date.hpp:198
void fromJDAtNoon(int jd)
将当天中午12点的儒略日数转换为日期
定义 Date.hpp:217
void fromYD(int year, int days)
将年份和一年中的天数转换为日期
定义 Date.hpp:227
int year_
定义 Date.hpp:251
void aJDToDateAtNoon(int J, Date &date)
将当天中午12点的儒略日数转换为当天日期
定义 Date.cpp:255
bool aIsLeapYear(int year)
判断是否为闰年
定义 Date.cpp:71
bool isLeapYear() const
判断是否为闰年
定义 Date.hpp:193
EMonth
月份,从1开始计数(1表示一月)
定义 Date.hpp:124
void aMJDToDate(int mjd, Date &date)
将当天00:00的简约儒略日转换为当天日期
定义 Date.cpp:297
static Date FromYMD(int year, int month, int day)
根据年份、月份、日期创建日期对象
定义 Date.hpp:143
int aDaysInMonthByYear(int month, int year)
获取某年某月的天数,根据年份判断
定义 Date.cpp:76
const char * aWeekDayShortName(int wday)
获取星期几的简写英文名称
定义 Date.cpp:58
static Date FromYD(int year, int days)
根据年份、一年中的天数创建日期对象
定义 Date.hpp:147
int month_
定义 Date.hpp:252
const char * weekDayShortName() const
获取星期几的简写英文名称
定义 Date.hpp:178
EWeekDay
星期几,从0开始计数(0表示星期日)
定义 Date.hpp:130
const char * aMoonShortName(int mon)
获取月份的简写英文名称
定义 Date.cpp:39
int day_
定义 Date.hpp:253
const char * weekDayFullName() const
获取星期几的完整英文名称
定义 Date.hpp:174
static Date FromJDAtNoon(int jd)
根据儒略日数创建日期对象
定义 Date.hpp:136
const char * monthShortName() const
获取月份的简写英文名称
定义 Date.hpp:170
const char * monthFullName() const
获取月份的完整英文名称
定义 Date.hpp:166
void aJDToDate(ImpreciseJD jd, Date &date, double *secInDay)
将儒略日数转换为当天日期
定义 Date.cpp:279
int dayOfWeek() const
获取日期是这一周的第几天
定义 Date.hpp:182
Date normalized() const
返回规范化后的日期对象副本
定义 Date.hpp:241
const char * aWeekDayFullName(int wday)
获取星期几的完整英文名称
定义 Date.cpp:49
int toJDAtNoon() const
将日期转换为儒略日数
定义 Date.hpp:203
int dayOfYear() const
获取日期是这一年的第几天,从1开始计数
定义 Date.hpp:188
void aDateToYD(const Date &date, int &year, int &days)
将日期转换为年份和一年中的天数
定义 Date.cpp:171
int aDateToJDAtNoon(const Date &date)
将日期转换为当天中午12点的儒略日数
定义 Date.cpp:240
double toMJD() const
将日期转换为当天00:00的简约儒略日数
定义 Date.hpp:212
const char * aMoonFullName(int mon)
获取月份的完整英文名称
定义 Date.cpp:32
void aYDToDate(int year, int days, Date &date)
将年份和一年中的天数转换为日期
定义 Date.cpp:215
void aDateNormalize(Date &date)
规范化日期对象
定义 Date.cpp:177
ImpreciseJD aDateToJD(const Date &date)
将日期转换为当天00:00的儒略日数
定义 Date.cpp:274
int aDateToMJD(const Date &date)
将日期转换为当天00:00的简约儒略日
定义 Date.cpp:292
void toYD(int &year, int &days) const
将日期转换为年份和一年中的天数
定义 Date.hpp:231
int aDaysInMonthByLeap(int month, bool isLeapYear)
获取某年某月的天数,根据是否为闰年判断
定义 Date.cpp:100
void fromYMD(int year, int month, int day)
将年份、月份、日期转换为日期
定义 Date.hpp:221
std::string aDateToString(const Date &date)
将日期转换为字符串表示
定义 Date.cpp:302
double toJD() const
将日期转换为当天00:00的儒略日数
定义 Date.hpp:207