23#include "AstUtil/StringView.hpp"
41constexpr double kTimeDefaultFormatPrecision = 3;
256AST_CORE_CAPI errc_t
aDateTimeFormat(
const DateTime& dttm, StringView format, std::string& str);
305AST_CORE_CAPI errc_t aDateTimeFormatRFC3339(
const DateTime& dttm, std::string& str);
308#ifdef AST_ENABLE_DATETIME_FORMAT_RFC
317AST_CORE_CAPI errc_t aDateTimeFormatRFC1123(
const DateTime& dttm, std::string& str);
328AST_CORE_CAPI errc_t aDateTimeFormatRFC2822(
const DateTime& dttm, std::string& str);
356AST_CORE_CAPI errc_t aDateTimeParseISO8601(StringView str, DateTime& dttm);
359A_ALWAYS_INLINE errc_t aDateTimeParseISO(StringView str, DateTime& dttm)
361 return aDateTimeParseISO8601(str, dttm);
405AST_CORE_CAPI errc_t
aDateTimeParse(StringView str, StringView format, DateTime& dttm);
459 static DateTime FromTm(
const tm* time);
463 static DateTime FromTimeTLocal(time_t time);
467 static DateTime FromTimeTUTC(time_t time);
479 const Date& date()
const{
return date_;}
480 Date& date() {
return date_;}
481 const Time& time()
const {
return time_;}
482 Time& time() {
return time_;}
483 int year()
const {
return date_.year();}
484 int& year() {
return date_.year();}
485 int month()
const {
return date_.month();}
486 int& month() {
return date_.month();}
487 int day()
const {
return date_.day();}
488 int&
day() {
return date_.day();}
489 int hour()
const {
return time_.hour();}
490 int&
hour() {
return time_.hour();}
491 int minute()
const {
return time_.minute();}
492 int& minute() {
return time_.minute();}
493 double second()
const {
return time_.second();}
494 double& second() {
return time_.second();}
495 int dayOfYear()
const {
return date_.dayOfYear();}
496 int dayOfWeek()
const {
return date_.dayOfWeek();}
497 void setYear(
int year) {date_.setYear(year);}
498 void setMonth(
int month) {date_.setMonth(month);}
499 void setDay(
int day) {date_.setDay(day);}
500 void setHour(
int hour) {time_.setHour(hour);}
501 void setMinute(
int minute) {time_.setMinute(minute);}
502 void setSecond(
double second) {time_.setSecond(second);}
510 void normalizeLocal(
int timezone){
517 DateTime dttm = *
this;
521 DateTime normalizedUTC()
const{
522 DateTime dttm = *
this;
526 DateTime normalizedLocal(
int timezone)
const{
527 DateTime dttm = *
this;
528 dttm.normalizeLocal(timezone);
531 DateTime normalizedBJT()
const{
532 DateTime dttm = *
this;
537 std::string toString(
int precision = 3)
const{
543 void addYears(
int years){
546 void addMonths(
int months){
549 void addDays(
int days){
552 void addDaysUTC(
int days){
555 void addDaysLocal(
int days,
int timezone){
558 void addDaysBJT(
int days){
561 void addHours(
int hours){
564 void addHoursUTC(
int hours){
567 void addHoursLocal(
int hours,
int timezone){
570 void addHoursBJT(
int hours){
573 void addMinutes(
int minutes){
576 void addMinutesUTC(
int minutes){
579 void addMinutesLocal(
int minutes,
int timezone){
582 void addMinutesBJT(
int minutes){
585 void addSeconds(
double seconds){
588 void addSecondsUTC(
double seconds){
591 void addSecondsLocal(
double seconds,
int timezone){
594 void addSecondsBJT(
double seconds){
598 DateTime& operator += (
double sec)
600 this->second() +=
sec;
603 DateTime& operator -= (
double sec)
605 this->second() -=
sec;
608 DateTime operator + (
double sec)
const
610 auto dttm = DateTime{ *
this };
614 DateTime operator -(
double sec)
const
616 auto dttm = DateTime{ *
this };
635DateTime aCurrentDateTimeUTC()
638 aCurrentDateTimeUTC(dttm);
Unit hour
小时
定义 Unit.cpp:428
static A_ALWAYS_INLINE DateTime FromJulianDate(const JulianDate &jd)
从儒略日数创建日期时间对象
定义 DateTime.hpp:436
static DateTime Parse(StringView str)
从字符串解析日期时间(任意格式)
定义 DateTime.hpp:472
ETimeZone
定义 DateTime.hpp:421
Date date_
日期
定义 DateTime.hpp:622
Time time_
时间
定义 DateTime.hpp:623
void aDateTimeAddMinutesBJT(DateTime &dttm, int minutes)
增加分(北京时间)
定义 DateTime.cpp:259
errc_t aDateTimeParseRFC3339(StringView str, DateTime &dttm)
解析RFC 3339格式的日期时间字符串
定义 DateTime.cpp:408
void aDateTimeNormalizeUTC(DateTime &dttm)
规范化日期时间对象(按UTC时间规范化)
定义 DateTime.cpp:90
void aDateTimeAddSecondsBJT(DateTime &dttm, double seconds)
增加秒(北京时间)
定义 DateTime.cpp:281
void aDateTimeAddDaysBJT(DateTime &dttm, int days)
增加日(北京时间)
定义 DateTime.cpp:213
void aDateTimeAddYears(DateTime &dttm, int years)
增加年
定义 DateTime.cpp:188
errc_t aDateTimeParseGMT(StringView str, DateTime &dttm)
解析GMT格式的日期时间字符串
定义 DateTime.cpp:469
void aDateTimeAddHours(DateTime &dttm, int hours)
增加时
定义 DateTime.cpp:218
errc_t aDateTimeFormatGregorianEn(const DateTime &dttm, std::string &str)
格式化日期时间为格里高利历格式(英文)
定义 DateTime.cpp:322
A_ALWAYS_INLINE errc_t aDateTimeFormatISO(const DateTime &dttm, std::string &str)
格式化日期时间为简单ISO 8601格式
定义 DateTime.hpp:293
void aTodayDateTimeUTC(DateTime &dttm)
获取今日00:00:00 UTC日期时间
定义 DateTime.cpp:67
void aDateTimeAddHoursLocal(DateTime &dttm, int hours, int timezone)
增加时(本地时间)
定义 DateTime.cpp:230
void aDateTimeAddMinutesLocal(DateTime &dttm, int minutes, int timezone)
增加分(本地时间)
定义 DateTime.cpp:252
errc_t aDateTimeFormatGMT(const DateTime &dttm, std::string &str)
格式化日期时间为GMT格式
定义 DateTime.cpp:334
void aDateTimeAddDaysLocal(DateTime &dttm, int days, int timezone)
增加日(本地时间)
定义 DateTime.cpp:208
void aDateTimeAddHoursBJT(DateTime &dttm, int hours)
增加时(北京时间)
定义 DateTime.cpp:236
AST_CORE_CAPI errc_t aDateTimeParse(StringView str, StringView format, DateTime &dttm)
解析自定义格式的日期时间字符串
定义 DateTimeParse.cpp:562
errc_t aDateTimeFormatGregorian(const DateTime &dttm, std::string &str, int precision)
格式化日期时间为格里高利历格式
定义 DateTime.cpp:311
void aDateTimeAddSecondsLocal(DateTime &dttm, double seconds, int timezone)
增加秒(本地时间)
定义 DateTime.cpp:276
errc_t aDateTimeParseAny(StringView str, DateTime &dttm)
解析任意格式的日期时间字符串
定义 DateTime.cpp:503
void aDateTimeAddHoursUTC(DateTime &dttm, int hours)
增加时(UTC时间)
定义 DateTime.cpp:224
void aDateTimeAddDays(DateTime &dttm, int days)
增加日
定义 DateTime.cpp:198
void aDateTimeAddMinutes(DateTime &dttm, int minutes)
增加分
定义 DateTime.cpp:242
errc_t aDateTimeParseGregorian(StringView str, DateTime &dttm)
解析格里高利历格式的日期时间字符串
定义 DateTime.cpp:415
void aDateTimeAddDaysUTC(DateTime &dttm, int days)
增加日(UTC时间)
定义 DateTime.cpp:203
void aDateTimeAddMonths(DateTime &dttm, int months)
增加月
定义 DateTime.cpp:193
A_ALWAYS_INLINE errc_t aDateTimeFormatDefault(const DateTime &dttm, std::string &str, int precision=kTimeDefaultFormatPrecision)
格式化日期时间为默认格式
定义 DateTime.hpp:338
void aDateTimeAddMinutesUTC(DateTime &dttm, int minutes)
增加分(UTC时间)
定义 DateTime.cpp:247
errc_t aDateTimeFormatISO8601(const DateTime &dttm, std::string &str)
格式化日期时间为ISO 8601格式
定义 DateTime.cpp:288
void aDateTimeNormalizeLocal(DateTime &dttm, int timezone)
规范化日期时间对象(按本地时间规范化)
定义 DateTime.cpp:169
void aTomorrowDateTimeUTC(DateTime &dttm)
获取明天00:00:00 UTC日期时间
定义 DateTime.cpp:73
void aDateTimeAddSecondsUTC(DateTime &dttm, double seconds)
增加秒(UTC时间)
定义 DateTime.cpp:271
void aCurrentDateTimeLocal(DateTime &dttm)
获取当前本地日期时间
定义 DateTime.cpp:55
void aDateTimeAddSeconds(DateTime &dttm, double seconds)
增加秒
定义 DateTime.cpp:266
void aDateTimeNormalizeBJT(DateTime &dttm)
规范化日期时间对象(按北京时间规范化)
定义 DateTime.cpp:183
AST_CORE_CAPI errc_t aDateTimeFormat(const DateTime &dttm, StringView format, std::string &str)
格式化日期时间为字符串
定义 DateTimeFormat.cpp:117
void aCurrentDateTimeUTC(DateTime &dttm)
获取当前UTC日期时间
定义 DateTime.cpp:61
errc_t aDateTimeParseGregorianEn(StringView str, DateTime &dttm)
解析格里高利历格式(英文)的日期时间字符串
定义 DateTime.cpp:436
void aDateTimeNormalize(DateTime &dttm)
规范化日期时间对象
定义 DateTime.cpp:80
auto normalized(const Vector &vec) -> typename std::enable_if<!std::is_pointer< Vector >::value, Vector >::type
normalized
定义 MathOperator.hpp:352
double normalize(double *vec, size_t N)
normalize
定义 MathOperator.hpp:306