23#include "AstUtil/StringView.hpp"
41constexpr int kTimeDefaultFormatPrecision = 3;
256AST_CORE_CAPI errc_t
aDateTimeFormat(
const DateTime& dttm, StringView format, std::string& str);
265AST_CORE_CAPI errc_t
aDateTimeFormatGregorian(
const DateTime& dttm, std::string& str,
int precision = kTimeDefaultFormatPrecision);
274AST_CORE_CAPI errc_t
aDateTimeFormatGregorianEn(
const DateTime& dttm, std::string& str,
int precision = kTimeDefaultFormatPrecision);
307AST_CORE_CAPI errc_t aDateTimeFormatRFC3339(
const DateTime& dttm, std::string& str);
310#ifdef AST_ENABLE_DATETIME_FORMAT_RFC
319AST_CORE_CAPI errc_t aDateTimeFormatRFC1123(
const DateTime& dttm, std::string& str);
330AST_CORE_CAPI errc_t aDateTimeFormatRFC2822(
const DateTime& dttm, std::string& str);
358AST_CORE_CAPI errc_t aDateTimeParseISO8601(StringView str, DateTime& dttm);
361A_ALWAYS_INLINE errc_t aDateTimeParseISO(StringView str, DateTime& dttm)
363 return aDateTimeParseISO8601(str, dttm);
407AST_CORE_CAPI errc_t
aDateTimeParse(StringView str, StringView format, DateTime& dttm);
461 static DateTime FromTm(
const tm* time);
465 static DateTime FromTimeTLocal(time_t time);
469 static DateTime FromTimeTUTC(time_t time);
481 const Date& date()
const{
return date_;}
482 Date& date() {
return date_;}
483 const Time& time()
const {
return time_;}
484 Time& time() {
return time_;}
485 int year()
const {
return date_.year();}
486 int& year() {
return date_.year();}
487 int month()
const {
return date_.month();}
488 int& month() {
return date_.month();}
489 int day()
const {
return date_.day();}
490 int&
day() {
return date_.day();}
491 int hour()
const {
return time_.hour();}
492 int&
hour() {
return time_.hour();}
493 int minute()
const {
return time_.minute();}
494 int&
minute() {
return time_.minute();}
495 double second()
const {
return time_.second();}
496 double& second() {
return time_.second();}
497 int dayOfYear()
const {
return date_.dayOfYear();}
498 int dayOfWeek()
const {
return date_.dayOfWeek();}
499 double secOfDay()
const {
return time_.totalSecond();}
500 void setYear(
int year) {date_.setYear(year);}
501 void setMonth(
int month) {date_.setMonth(month);}
502 void setDay(
int day) {date_.setDay(day);}
503 void setHour(
int hour) {time_.setHour(hour);}
504 void setMinute(
int minute) {time_.setMinute(minute);}
505 void setSecond(
double second) {time_.setSecond(second);}
513 void normalizeLocal(
int timezone){
520 DateTime dttm = *
this;
524 DateTime normalizedUTC()
const{
525 DateTime dttm = *
this;
529 DateTime normalizedLocal(
int timezone)
const{
530 DateTime dttm = *
this;
531 dttm.normalizeLocal(timezone);
534 DateTime normalizedBJT()
const{
535 DateTime dttm = *
this;
541 bool isInf()
const{
return time_.isInf();}
550 void addYears(
int years){
553 void addMonths(
int months){
554 aDateTimeAddMonths(*
this, months);
556 void addDays(
int days){
559 void addDaysUTC(
int days){
562 void addDaysLocal(
int days,
int timezone){
565 void addDaysBJT(
int days){
568 void addHours(
int hours){
571 void addHoursUTC(
int hours){
574 void addHoursLocal(
int hours,
int timezone){
577 void addHoursBJT(
int hours){
580 void addMinutes(
int minutes){
583 void addMinutesUTC(
int minutes){
586 void addMinutesLocal(
int minutes,
int timezone){
589 void addMinutesBJT(
int minutes){
592 void addSeconds(
double seconds){
595 void addSecondsUTC(
double seconds){
598 void addSecondsLocal(
double seconds,
int timezone){
601 void addSecondsBJT(
double seconds){
605 DateTime& operator += (
double sec)
607 this->second() +=
sec;
610 DateTime& operator -= (
double sec)
612 this->second() -=
sec;
615 DateTime operator + (
double sec)
const
617 auto dttm = DateTime{ *
this };
621 DateTime operator -(
double sec)
const
623 auto dttm = DateTime{ *
this };
642DateTime aCurrentDateTimeUTC()
645 aCurrentDateTimeUTC(dttm);
static A_ALWAYS_INLINE DateTime FromJulianDate(const JulianDate &jd)
从儒略日数创建日期时间对象
定义 DateTime.hpp:438
static DateTime Parse(StringView str)
从字符串解析日期时间(任意格式)
定义 DateTime.hpp:474
ETimeZone
定义 DateTime.hpp:423
Date date_
日期
定义 DateTime.hpp:629
bool isInf() const
检查日期时间对象是否为无穷大
定义 DateTime.hpp:541
Time time_
时间
定义 DateTime.hpp:630
std::string toString(int precision=3) const
将日期时间对象转换为字符串表示
定义 DateTime.hpp:544
void aDateTimeAddMinutesBJT(DateTime &dttm, int minutes)
增加分(北京时间)
定义 DateTime.cpp:264
errc_t aDateTimeParseRFC3339(StringView str, DateTime &dttm)
解析RFC 3339格式的日期时间字符串
定义 DateTime.cpp:413
void aDateTimeNormalizeUTC(DateTime &dttm)
规范化日期时间对象(按UTC时间规范化)
定义 DateTime.cpp:91
void aDateTimeAddSecondsBJT(DateTime &dttm, double seconds)
增加秒(北京时间)
定义 DateTime.cpp:286
void aDateTimeAddDaysBJT(DateTime &dttm, int days)
增加日(北京时间)
定义 DateTime.cpp:218
void aDateTimeAddYears(DateTime &dttm, int years)
增加年
定义 DateTime.cpp:193
errc_t aDateTimeParseGMT(StringView str, DateTime &dttm)
解析GMT格式的日期时间字符串
定义 DateTime.cpp:474
void aDateTimeAddHours(DateTime &dttm, int hours)
增加时
定义 DateTime.cpp:223
A_ALWAYS_INLINE errc_t aDateTimeFormatISO(const DateTime &dttm, std::string &str)
格式化日期时间为简单ISO 8601格式
定义 DateTime.hpp:295
void aTodayDateTimeUTC(DateTime &dttm)
获取今日00:00:00 UTC日期时间
定义 DateTime.cpp:68
void aDateTimeAddHoursLocal(DateTime &dttm, int hours, int timezone)
增加时(本地时间)
定义 DateTime.cpp:235
void aDateTimeAddMinutesLocal(DateTime &dttm, int minutes, int timezone)
增加分(本地时间)
定义 DateTime.cpp:257
errc_t aDateTimeFormatGregorian(const DateTime &dttm, std::string &str, int precision)
格式化日期时间为格里高利历格式
定义 DateTime.cpp:316
errc_t aDateTimeFormatGMT(const DateTime &dttm, std::string &str)
格式化日期时间为GMT格式
定义 DateTime.cpp:339
void aDateTimeAddDaysLocal(DateTime &dttm, int days, int timezone)
增加日(本地时间)
定义 DateTime.cpp:213
void aDateTimeAddHoursBJT(DateTime &dttm, int hours)
增加时(北京时间)
定义 DateTime.cpp:241
AST_CORE_CAPI errc_t aDateTimeParse(StringView str, StringView format, DateTime &dttm)
解析自定义格式的日期时间字符串
定义 DateTimeParse.cpp:562
void aDateTimeAddSecondsLocal(DateTime &dttm, double seconds, int timezone)
增加秒(本地时间)
定义 DateTime.cpp:281
errc_t aDateTimeParseAny(StringView str, DateTime &dttm)
解析任意格式的日期时间字符串
定义 DateTime.cpp:508
void aDateTimeAddHoursUTC(DateTime &dttm, int hours)
增加时(UTC时间)
定义 DateTime.cpp:229
void aDateTimeAddDays(DateTime &dttm, int days)
增加日
定义 DateTime.cpp:203
void aDateTimeAddMinutes(DateTime &dttm, int minutes)
增加分
定义 DateTime.cpp:247
errc_t aDateTimeParseGregorian(StringView str, DateTime &dttm)
解析格里高利历格式的日期时间字符串
定义 DateTime.cpp:420
void aDateTimeAddDaysUTC(DateTime &dttm, int days)
增加日(UTC时间)
定义 DateTime.cpp:208
void aDateTimeAddMonths(DateTime &dttm, int months)
增加月
定义 DateTime.cpp:198
A_ALWAYS_INLINE errc_t aDateTimeFormatDefault(const DateTime &dttm, std::string &str, int precision=kTimeDefaultFormatPrecision)
格式化日期时间为默认格式
定义 DateTime.hpp:340
void aDateTimeAddMinutesUTC(DateTime &dttm, int minutes)
增加分(UTC时间)
定义 DateTime.cpp:252
errc_t aDateTimeFormatGregorianEn(const DateTime &dttm, std::string &str, int precision)
格式化日期时间为格里高利历格式(英文)
定义 DateTime.cpp:327
errc_t aDateTimeFormatISO8601(const DateTime &dttm, std::string &str)
格式化日期时间为ISO 8601格式
定义 DateTime.cpp:293
void aDateTimeNormalizeLocal(DateTime &dttm, int timezone)
规范化日期时间对象(按本地时间规范化)
定义 DateTime.cpp:174
void aTomorrowDateTimeUTC(DateTime &dttm)
获取明天00:00:00 UTC日期时间
定义 DateTime.cpp:74
void aDateTimeAddSecondsUTC(DateTime &dttm, double seconds)
增加秒(UTC时间)
定义 DateTime.cpp:276
void aCurrentDateTimeLocal(DateTime &dttm)
获取当前本地日期时间
定义 DateTime.cpp:56
void aDateTimeAddSeconds(DateTime &dttm, double seconds)
增加秒
定义 DateTime.cpp:271
void aDateTimeNormalizeBJT(DateTime &dttm)
规范化日期时间对象(按北京时间规范化)
定义 DateTime.cpp:188
AST_CORE_CAPI errc_t aDateTimeFormat(const DateTime &dttm, StringView format, std::string &str)
格式化日期时间为字符串
定义 DateTimeFormat.cpp:117
void aCurrentDateTimeUTC(DateTime &dttm)
获取当前UTC日期时间
定义 DateTime.cpp:62
errc_t aDateTimeParseGregorianEn(StringView str, DateTime &dttm)
解析格里高利历格式(英文)的日期时间字符串
定义 DateTime.cpp:441
void aDateTimeNormalize(DateTime &dttm)
规范化日期时间对象
定义 DateTime.cpp:81
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
Unit minute
分钟,不要命名为min,容易与std::min冲突
定义 Unit.cpp:467
Unit hour
小时
定义 Unit.cpp:468