Signature | Description | Parameters |
---|---|---|
template<typename T> static std::vector<typename I> gen_datetime_index(const char *start_datetime, const char *end_datetime, time_frequency t_freq, long increment = 1, DT_TIME_ZONE tz = DT_TIME_ZONE::LOCAL); |
This static method generates a date/time-based index vector that could be fed directly to one of the load methods. Depending on the specified frequency, it generates specific timestamps (see below). It returns a vector of I timestamps. Currently I could be any built-in numeric type or DateTime NOTE: It is the responsibility of the programmer to make sure I type is big enough to contain the frequency. |
start_datetime, end_datetime: They are the start/end date/times of requested timestamps. They must be in the following format: MM/DD/YYYY [HH[:MM[:SS[.MMM]]]] t_freq: Specifies the timestamp frequency. Depending on the frequency, and I type specific timestamps are generated as follows:
tz: Time-zone of generated timestamps |
static void test_gen_datetime_index() { std::cout << "\nTesting gen_datetime_index() ..." << std::endl; std::vector<unsigned long> idx_vec1 = MyDataFrame::gen_datetime_index("01/01/2018", "12/31/2038", time_frequency::annual, 1, DT_TIME_ZONE::AM_NEW_YORK); assert(idx_vec1.size() == 21); assert(idx_vec1.capacity() == 22); assert(idx_vec1[0] == 20180101); assert(idx_vec1[1] == 20190101); assert(idx_vec1[10] == 20280101); assert(idx_vec1[20] == 20380101); idx_vec1 = MyDataFrame::gen_datetime_index("01/01/2018", "12/31/2038", time_frequency::monthly, 3, DT_TIME_ZONE::AM_NEW_YORK); assert(idx_vec1.size() == 84); assert(idx_vec1.capacity() == 86); assert(idx_vec1[0] == 20180101); assert(idx_vec1[1] == 20180401); assert(idx_vec1[2] == 20180701); assert(idx_vec1[40] == 20280101); assert(idx_vec1[83] == 20381001); idx_vec1 = MyDataFrame::gen_datetime_index("01/01/2018", "12/31/2038", time_frequency::weekly, 4, DT_TIME_ZONE::AM_NEW_YORK); assert(idx_vec1.size() == 274); assert(idx_vec1.capacity() == 274); assert(idx_vec1[0] == 20180101); assert(idx_vec1[1] == 20180129); assert(idx_vec1[2] == 20180226); assert(idx_vec1[272] == 20381108); assert(idx_vec1[273] == 20381206); idx_vec1 = MyDataFrame::gen_datetime_index("01/01/2018", "12/31/2038", time_frequency::daily, 1, DT_TIME_ZONE::AM_NEW_YORK); assert(idx_vec1.size() == 7669); assert(idx_vec1.capacity() == 7670); assert(idx_vec1[0] == 20180101); assert(idx_vec1[1] == 20180102); assert(idx_vec1[2] == 20180103); assert(idx_vec1[7667] == 20381229); assert(idx_vec1[7668] == 20381230); idx_vec1 = MyDataFrame::gen_datetime_index("01/01/2018","12/31/2022", time_frequency::hourly, 1, DT_TIME_ZONE::AM_NEW_YORK); assert(idx_vec1.size() == 43800); assert(idx_vec1.capacity() == 43801); assert(idx_vec1[0] == 1514782800); assert(idx_vec1[1] == 1514786400); assert(idx_vec1[2] == 1514790000); assert(idx_vec1[43798] == 1672455600); assert(idx_vec1[43799] == 1672459200); idx_vec1 = MyDataFrame::gen_datetime_index("01/01/2018", "03/31/2018", time_frequency::secondly, 10, DT_TIME_ZONE::AM_NEW_YORK); assert(idx_vec1.size() == 768600); assert(idx_vec1.capacity() == 768601); assert(idx_vec1[0] == 1514782800); assert(idx_vec1[1] == 1514782810); assert(idx_vec1[2] == 1514782820); assert(idx_vec1[768598] == 1522468780); assert(idx_vec1[768599] == 1522468790); idx_vec1 = MyDataFrame::gen_datetime_index("01/01/2018 00:00:00.000", "01/01/2018 10:10:01.600", time_frequency::millisecondly, 500, DT_TIME_ZONE::AM_NEW_YORK); assert(idx_vec1.size() == 73204); assert(idx_vec1.capacity() == 73229); assert(idx_vec1[0] == 1514782800000000000); assert(idx_vec1[1] == 1514782800500000000); assert(idx_vec1[2] == 1514782801000000000); assert(idx_vec1[73201] == 1514819400500000000); assert(idx_vec1[73202] == 1514819401000000000); assert(idx_vec1[73203] == 1514819401500000000); std::vector<DateTime> idx_vec2 = StdDataFrame<DateTime>::gen_datetime_index("01/01/2018", "12/31/2022", time_frequency::hourly, 1, DT_TIME_ZONE::AM_NEW_YORK); assert(idx_vec2.size() == 43800); assert(idx_vec2[0].string_format (DT_FORMAT::DT_TM2) == "01/01/2018 00:00:00.000"); assert(idx_vec2[1].string_format (DT_FORMAT::DT_TM2) == "01/01/2018 01:00:00.000"); assert(idx_vec2[2].string_format (DT_FORMAT::DT_TM2) == "01/01/2018 02:00:00.000"); assert(idx_vec2[43798].string_format (DT_FORMAT::DT_TM2) == "12/30/2022 22:00:00.000"); assert(idx_vec2[43799].string_format (DT_FORMAT::DT_TM2) == "12/30/2022 23:00:00.000"); }