Movatterモバイル変換


[0]ホーム

URL:


Back to Documentations

SignatureDescriptionParameters
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:
  • I type of DateTime always generates timestamps of DateTime.
  • Annual, monthly, weekly, and daily frequencies generatesYYYYMMDD timestamps.
  • Hourly, minutely, and secondly frequencies generates epoch timestamps (64 bit).
  • Millisecondly frequency generates nano-second since epoch timestamps (128 bit).
increment: Increment in the units of the frequency
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");}

C++ DataFrame
[8]ページ先頭

©2009-2025 Movatter.jp