| Signature | Description | Parameters |
|---|---|---|
template<typename T>staticstd::vector<typename I>gen_datetime_index(constchar*start_datetime,constchar*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 |
staticvoid test_gen_datetime_index(){std::cout<<"\nTesting gen_datetime_index() ..."<<std::endl;std::vector<unsignedlong> 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");}