簡體   English   中英

字符串,以提升posix_time然后再回來

[英]string to boost posix_time then back again

這里不是問題,只是好奇心。 我想知道在與其他語言的dateTime實現類似的操作只有3或4行時,我必須編寫的代碼量才能實現這一點。

所以我得到的是一個字符串的時間戳,即: 06-Feb-2013 00:01:01

通過使用boost lib,我將創建輸入和輸出facet,創建一個stringstream並將io facet填充到流中。 然后我將時間戳字符串讀入字符串流,然后將其移出到posix時間對象,然后將其添加1秒,然后再將其移回流中,以便將其用作字符串。 從某種意義上說,我在這里所做的就是將時間戳變成06-Feb-2013 00:01:0106-Feb-2013 00:01:02

一個例子是:

using namespace boost::posix_time;

ptime timeStamp;
time_facet* outFacet = new time_facet("%d-%b-%Y %H:%M:%S");
time_input_facet* inFacet = new time_input_facet("%d-%b-%Y %H:%M:%S");
std::stringstream ss;
ss.imbue(std::locale(std::locale::classic(), outFacet));
ss.imbue(std::locale(ss.getloc(), inFacet));

ss.str(06-Feb-2013 00:01:01);
ss >> timeStamp;
timeStamp+=seconds(1);
ss.str("");
ss << timeStamp;

代碼有效,我沒有問題。 我只是想知道我是否在迂回的方式中考慮使用python / ruby​​ / js等,所有我必須要做的就是:

dt = new DateTime("06-Feb-2013 00:01:01", aformat);
dt.addSecond() //or dt += another DateTime object
dt.strformat(aformat) //or trace/print/puts dt

現在我欣賞C ++是較低級別但我仍然不禁疑惑。 那么任何改進或想法?

如果您願意接受稍微不同(固定)的時間格式,請使用std :: string to_simple_string(ptime)(格式化YYYY-mmm-DD HH:MM:SS.fffffffff字符串,其中mmm 3 char月份名稱。僅限小數秒如果非零,則為http://www.boost.org/doc/libs/1_34_0/doc/html/date_time/posix_time.html )可以簡化您的代碼以進行輸出格式化以及相應的“ptime time_from_string(std: :串)”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM