14 #ifndef TSA_TIME__INCLUDED 15 #define TSA_TIME__INCLUDED 17 #include "TSATypeDef.h" 26 class out_storage_stream;
27 class in_storage_stream;
59 int64_t m_usec_since_midnight;
61 template<
class Archive>
62 void serialize(Archive & ar)
64 ar(m_usec_since_midnight);
68 time_of_day(uint32_t hour, uint32_t min, uint32_t sec = 0, uint32_t u_sec = 0);
69 time_of_day(
const time_of_day&);
73 uint32_t hour(
void)
const;
74 uint32_t minute(
void)
const;
75 uint32_t second(
void)
const;
76 uint32_t usec(
void)
const;
77 uint32_t microsec(
void)
const;
78 int64_t microsec_since_midnight(
void)
const;
79 void microsec_since_midnight(int64_t usec_since_midnight);
80 std::string to_string(
const char* format =
"hh:mm:ss.f")
const;
81 bool operator==(
const time_of_day& other)
const {
82 return m_usec_since_midnight == other.m_usec_since_midnight;
84 bool operator!=(
const time_of_day& other)
const {
85 return m_usec_since_midnight != other.m_usec_since_midnight;
87 bool operator<(
const time_of_day& other)
const {
88 return m_usec_since_midnight < other.m_usec_since_midnight;
90 bool operator>(
const time_of_day& other)
const {
91 return m_usec_since_midnight > other.m_usec_since_midnight;
93 bool operator<=(
const time_of_day& other)
const {
94 return m_usec_since_midnight <= other.m_usec_since_midnight;
96 bool operator>=(
const time_of_day& other)
const {
97 return m_usec_since_midnight >= other.m_usec_since_midnight;
102 std::ostream& operator<<(std::ostream& stream,
const time_of_day& td);
120 tsa_declare_testable;
124 char m_time_zone_offset_half_hours;
126 template<
class Archive>
127 void serialize(Archive & ar)
130 ar(m_time_zone_offset_half_hours);
133 static int ymd_to_jd(
int y,
int m,
int d);
134 static void jd_to_jmd(
int jd,
int& y,
int& m,
int& d);
135 static int s_arr_days_in_month[12];
138 date& add_days(
int days);
139 date& subtract_days(
int days);
140 int Subtract(
const date other)
const;
141 void to_year_month_day(
int& y,
int& m,
int& d)
const;
146 sun = 0, mon = 1, tue = 2, wed = 3, thu = 4, fri = 5, sat = 6
151 jan = 1, feb = 2, mar = 3, apr = 4, may = 5, jun = 6, jul = 7,
152 aug = 8, sep = 9, oct = 10, nov = 11, dec = 12
155 static const int days_in_year;
156 static const int days_in_leap_year;
176 static const int undefined_julian_day;
185 static bool is_leap_year(
int year);
191 date(
const char* date_str);
205 date(
int year,
int month,
int day);
208 date& operator= (
const date& other);
212 void assign(
const date&,
bool _error_on_undefined =
true);
221 void julian_day(
int julian_day);
224 int julian_day(
void)
const;
230 void reset_from_bin_rep(
const bin_rep&);
231 bin_rep get_bin_rep(
void)
const;
233 int GetJulianMonth(
void)
const;
234 int GetJulianQuarter(
void)
const;
235 int GetJulianSemester(
void)
const;
236 static int GetJulianMonth(
int nJulDay);
237 static int GetJulianQuarter(
int nJulDay);
238 static int GetJulianSemester(
int nJulDay);
240 int year(
void)
const;
243 int month(
void)
const;
246 int day_of_month(
void)
const;
249 int day_of_year(
void)
const;
255 bool is_weekend(
void)
const;
258 void yyyymmdd(uint32_t yyyymmdd);
261 uint32_t yyyymmdd(
void)
const;
290 void set_old(
const std::string& date_string,
const char* format_string);
312 void set_from_string(
const std::string& date_string,
const char* format_string =
"");
319 void set_from_iso_string(
const std::string& iso_date_string);
322 void set(uint32_t year, uint32_t month, uint32_t day);
325 bool in_leap_year(
void)
const;
327 static bool _IsLeapYear(
int year);
336 static bool is_valid(
int year,
int month,
int day);
337 bool is_valid(
void)
const;
338 bool not_defined(
void)
const;
340 bool defined(
void)
const;
341 void verify_defined(
void)
const;
350 void operator+= (
const duration& num_days);
353 void operator-= (
const duration& num_days);
355 int ApproxNumBusinessDaysBetween(
const date&)
const;
357 date operator++ (
int);
359 date operator-- (
int);
362 void incr_to_next_weekday(
void);
365 void decr_to_prev_weekday(
void);
368 void incr(
int num_days);
371 void decr(
int num_days);
377 bool operator!= (
const date& other)
const;
393 void WriteState(out_storage_stream& stream)
const;
394 void ReadState(in_storage_stream& stream);
397 friend std::ostream& operator<< (std::ostream&,
const date&
date);
414 std::ostream& operator<< (std::ostream& stream,
const date&
date);
429 tsa_declare_testable;
454 static const char undefined_timezone_offset;
465 int64_t m_usec_since_midnight;
468 void get_hr_min_sec(uint32_t* hour_ptr, uint32_t* minute_ptr, uint32_t* second_ptr)
const;
469 string _IntToFixedLengthString(
int num,
size_t len)
const;
471 template<
class Archive>
472 void serialize(Archive & ar)
475 ar(m_time_zone_offset_half_hours);
476 ar(m_usec_since_midnight);
516 void verify_defined(
void)
const;
519 void set_to_null(
void);
522 bool has_time_zone_offset(
void)
const;
525 int timezone_half_hour_offset(
void)
const;
528 void timezone_half_hour_offset(
int);
531 double timezone_offset(
void)
const;
534 void timezone_offset(
double hours);
537 char convert_hour_offset_to_half_hour_offset(
double hours);
543 date_time convert_to_time_zone_offset(
double new_offset)
const;
557 {
return date_time::system_time(
tsa::utc_time, set_tz_offset_flag); }
568 void assign(
const tsa::date_time& other,
bool error_on_nil =
true);
577 date_time(uint32_t year, uint32_t month, uint32_t day);
580 date_time(
const date& date, uint32_t hour, uint32_t minute, uint32_t second = 0);
583 date_time(uint32_t year, uint32_t month, uint32_t day,
584 uint32_t hour, uint32_t minute, uint32_t second = 0, uint32_t microseconds = 0);
587 date_time(
const date& date, uint32_t hour,
588 uint32_t minute, uint32_t second, uint32_t microseconds);
620 void set(
const std::chrono::system_clock::time_point& time_pt,
645 bool defined(
void)
const;
652 tsa::time_of_day time_of_day(
void)
const;
654 static bool is_valid(
int hour,
int minute,
int second,
int millisecond);
655 bool is_valid(
void)
const;
656 bool not_defined(
void)
const;
658 void reset_from_bin_rep(
const bin_rep&);
659 bin_rep get_bin_rep(
void)
const;
662 uint32_t hhmmssmmm(
void)
const;
665 uint64_t hhmmssmmmmmm(
void)
const;
668 uint32_t hhmmss(
void)
const;
671 uint32_t hhmm(
void)
const;
674 int64_t microsec_since_midnight(
void)
const;
677 void microsec_since_midnight(int64_t);
681 bool is_midnight(
void)
const;
684 uint32_t hour(
void)
const;
687 uint32_t minute(
void)
const;
690 uint32_t second(
void)
const;
693 uint32_t microsec(
void)
const;
696 uint32_t usec(
void)
const;
699 void set_hhmmssmmmmmm(uint64_t hhmmssmmmmmm);
702 void set_hhmmss(uint32_t hhmmss);
705 void set_hhmm(uint32_t hhmm);
708 void set_time(uint32_t hour, uint32_t minute, uint32_t second, uint32_t microsecond);
711 void set_time(uint32_t hour, uint32_t minute, uint32_t second);
714 void set_time(uint32_t hour, uint32_t minute);
738 std::string to_time_string(
const char* format =
"hh:mm:ss.f")
const;
750 std::string to_string(
const char* date_format,
const char* time_format,
char sep)
const;
795 void set_from_string(
const std::string& date_time_string,
796 const char* date_format =
nullptr,
char sep =
'T');
806 void set_from_iso_string(
const std::string& date_time_string);
809 string GetReportDateTimeString(
const char* dateFormat =
"yyyy-mmm-dd");
812 void set_date(uint32_t year, uint32_t month, uint32_t day);
815 void set_date(
const date&);
823 void set_date_from_string(
const std::string& date_string,
const char* date_format);
838 void set_time_from_string(
const std::string& time_string);
840 void set_string_time__check(
const std::string& time_string,
const char* format =
"hh:mm:ss.f");
848 bool operator!= (
const date_time& other)
const;
863 void incr_date(
int num_days = 1);
866 void incr_microsec(int64_t n = 1);
869 void decr_microsec(int64_t n = 1);
871 void round_down_to_minute(
void);
872 void round_down_to_second(
void);
874 static clock_t clock_cycles(
void);
875 void write_state(out_storage_stream&)
const;
876 void read_state(in_storage_stream&);
883 date operator++ (
int);
885 date operator-- (
int);
893 void operator-= (
const duration& duration);
946 int m_24_hour_periods;
947 int64_t m_microseconds;
950 template<
class Archive>
951 void serialize(Archive & ar)
953 ar(m_24_hour_periods);
966 static duration milliseconds(uint64_t);
968 static duration microseconds(uint64_t);
978 duration(uint64_t num_24h_periods, uint64_t microsec_of_day);
980 duration(
double decimal_24hour_periods);
994 int get_days(
void)
const;
1000 int64_t get_microseconds(
void)
const;
1007 bool is_zero()
const;
1010 int64_t to_microseconds(
void)
const;
1011 int64_t to_seconds(
void)
const;
1017 double to_fractional_days(
void)
const;
1023 double to_fractional_years(
void)
const;
1026 void operator+= (
const duration& other);
1043 void WriteState(out_storage_stream&)
const;
1044 void ReadState(in_storage_stream&);
1048 std::ostream& operator<< (std::ostream& stream,
const duration& ts);
static const int64_t last_microsecond_in_day
Constant representing the number of microseconds in a day.
Definition: TSATime.h:443
static date_time utc_time(set_timezone_offset_select set_tz_offset_flag=no_timezone_offset)
Returns the current system date-time as 'universal time coordinate' time.
Definition: TSATime.h:556
double max(const series< double > &series, size_t period)
Returns the highest value found in series over given .
Definition: TSAFunctionsScalar.cpp:180
static const int64_t microseconds_in_minute
Constant representing the number of microseconds in a minute.
Definition: TSATime.h:434
static const int max_julian_day
Largest valid julian day.
Definition: TSATime.h:174
Namespace for the 'Trading System API' library.
Definition: original1.TSA3Core.cpp:20
static const int64_t microseconds_in_second
Constant representing the number of microseconds in a second.
Definition: TSATime.h:446
sref< double > operator*(numeric_series_cref a, numeric_series_cref b)
Multiplies a by b.
Definition: TSADSLBase.cpp:42
static const date gregorian_start
Gregorian calendar start date (of this implementation - Jan 1 1753).
Definition: TSATime.h:168
static const date max
Largest valid date (dec 31 99999AD).
Definition: TSATime.h:165
static const int64_t microseconds_in_hour
Constant representing the number of microseconds in an hour.
Definition: TSATime.h:437
static const uint32_t now_utc
Constructor flag to initialize self to the current system's 'UTC time'.
Definition: TSATime.h:463
static const int64_t microseconds_in_day
Constant representing the number of microseconds in a day.
Definition: TSATime.h:440
static const int min_yyyymmdd
Smallest valid yyyymmdd.
Definition: TSATime.h:179
sref< bool > operator>(numeric_series_cref a, numeric_series_cref b)
comparison.
Definition: TSADSLBase.cpp:104
static const date_time min
Constant representing the smallest allowed date_time.
Definition: TSATime.h:449
variant objects can represent values of different types.
Definition: TSAVariant.h:140
week_day
Values that represent week days.
Definition: TSATime.h:145
Represents a duration - the difference between two date_time values.
Definition: TSATime.h:945
std::ostream & operator<<(std::ostream &s, const transaction &t)
Writes human readable transaction information to stream.
Definition: TSAOrder.cpp:779
local_or_utc_time_select
Flag to set time to either 'local time' or 'coordinate universal time'.
Definition: TSATime.h:39
static const date_time max
Constant representing the largest allowed date_time.
Definition: TSATime.h:452
static const int min_julian_day
Smallest valid julian day.
Definition: TSATime.h:171
sref< double > operator+(numeric_series_cref a, numeric_series_cref b)
Adds a and b.
Definition: TSADSLBase.cpp:32
sref< bool > operator<=(numeric_series_cref a, numeric_series_cref b)
comparison.
Definition: TSADSLBase.cpp:91
A date of the Gregorian calendar.
Definition: TSATime.h:119
sref< bool > operator>=(numeric_series_cref a, numeric_series_cref b)
comparison.
Definition: TSADSLBase.cpp:117
double min(const series< double > &series, size_t period)
Returns the smallest value found in series over given .
Definition: TSAFunctionsScalar.cpp:218
sref< bool > operator==(numeric_series_cref a, numeric_series_cref b)
comparison.
Definition: TSADSLBase.cpp:130
static const uint32_t undefined
Constructor flag to initilize self to a not-initialized state.
Definition: TSATime.h:457
static const date min
Smallest valid date ( jan 1 100AD).
Definition: TSATime.h:162
static const int max_yyyymmdd
Largest valid yyyymmdd.
Definition: TSATime.h:182
set_timezone_offset_select
Values that represent set timezone offset selects.
Definition: TSATime.h:45
sref< double > operator/(numeric_series_cref a, numeric_series_cref b)
Divides a by b.
Definition: TSADSLBase.cpp:47
static date_time now(void)
Returns the current system date-time.
Definition: TSATime.h:550
static const uint32_t undefined
Constructor flag to instruct self to stay undefined (see defined()).
Definition: TSATime.h:159
static const uint32_t now_local
Constructor flag to initialize self to the current system's 'local time'.
Definition: TSATime.h:460
static date_time local_time(void)
Returns the current system date-time. Same as now();.
Definition: TSATime.h:553
Class representing a gregorian-date and time-of-day combination. The time component has microsecond r...
Definition: TSATime.h:428
date_time(const std::chrono::time_point< std::chrono::system_clock > &time_point)
Constructor. Translates given time_point as local-time.
Definition: TSATime.h:493
sref< double > operator-(numeric_series_cref a, numeric_series_cref b)
Subtracts b from a.
Definition: TSADSLBase.cpp:37
Month
Values that represent months.
Definition: TSATime.h:150
sref< bool > operator<(numeric_series_cref a, numeric_series_cref b)
comparison.
Definition: TSADSLBase.cpp:78