Boost๋ก ์๊ฐ ๊ฐ ์ฌ์ฉํด๋ณด๊ธฐ
๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด, ๋ก๊ทธ๋ผ๋๊ฐ HTTP ์์ฒญ์ ๋ฐ์์ ๋๋ผ๋๊ฐ ํ์ฌ ์๊ฐ์ ์ ๋ณด๋ฅผ ๋จ๊ธธ ๋๊ฐ ์ข ์ข ์์ต๋๋ค.
์ ๋ C์ธ์ด์์๋ ์๋์ ๊ฐ์ด ํ์ฌ ์๊ฐ์ ๋จ๊ธฐ๊ณ ์์ต๋๋ค
long get_current_msec(void)
{
long cur_msec = 0;
struct timeval tv_time;
gettimeofday(&tv_time, 0);
cur_msec = (long)(tv_time.tv_sec*1000) + (long)(tv_time.tv_usec/1000);
return cur_msec;
}
Boost์์๋ ์๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ญ์ ์กด์ฌํฉ๋๋ค
(๋ฌผ๋ก ์ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ C++ ์ฝ๋์ ์ ์ฉํด๋ ๊ด์ฐฎ์ต๋๋ค ๐ )
Boost์ Posix Time ์๊ฐ๊ธ์๋ ์๋์ ๊ฐ์ด ์ค๋ช
๋์ด์์ต๋๋ค
The class boost::posix_time::ptime is the primary interface for time point manipulation. In general, the ptime class is immutable once constructed although it does allow assignment.
Class ptime is dependent on gregorian::date for the interface to the date portion of a time point.
Other techniques for creating times include time iterators.
Boost์ ptime ํด๋์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์กฐ์์ ์ํ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค์ด๋๊น ์ ์ฌ์ฉํ๋ ๋ด์ฉ ๐ฃ
Header๋ ์ด๋ ๊ฒ ์ ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
#include <boost/date_time.hpp>
// posix_time๋ง ์ฌ์ฉํ๊ฒ ๋ค๋ฉด
#include "boost/date_time/posix_time/posix_time.hpp"
์์ฑ์๋ ์ด๋ ๊ฒ ์ฌ์ฉํ ์ ์๋ต๋๋ค
// 1) ๊ธฐ๋ณธ ์์ฑ์
ptime timeEx;
// 2) date๋ offset ์ค์ ๊ฐ๋ฅ
ptime timeEx2(date(2022, Nov, 10),hours(1));
// 3) Copy constructor๋ ์ง์
ptime timeEx(timeEx2);
// 4) infinities, not-a-date-time, max_date_time, and min_date_time๋ก ํน๋ณํ ์๊ฐ๋ ๋์
๊ฐ๋ฅ
time infinTime(pos_infin);
๊ทธ๋ฆฌ๊ณ ๋ฌธ์์ด๋ก๋ string ๊ฐ์ time ๊ฐ์ผ๋ก ๋ณํํด์ฃผ๊ฑฐ๋ ("2022-11-29" → 2022-11-29), iso ํ์์ ๊ฐ์ time ๊ฐ์ผ๋ก ๋ณํํด์ฃผ๋ api๋ ์ ๊ณต์ ํ๋ค๊ณ ํฉ๋๋น
Boost๋ก ํ์ฌ ์๊ฐ ๊ฐ์ ธ์ค๊ธฐ
๊ทธ๋ฌ๋ฉด ํ์ฌ ์๊ฐ ๊ฐ์ ธ์ค๋ ์์ ๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค
struct timeInfo
{
string YYYY;
string MM;
string DD;
string HH;
string mm;
string ss;
};
timeInfo getBoostTimeLocal()
{
timeInfo time;
try
{
boost::posix_time::ptime timeLocal =
boost::posix_time::second_clock::local_time();
// timeLocal์ ํ์ฌ ์๊ฐ์ ๊ฐ์ ธ์์ string์ผ๋ก ๋ฐ๊ฟ์ ์ฐจ๊ณก์ฐจ๊ณก ๋ฃ์ด์ค๋๋ค
time.YYYY = to_string(timeLocal.date().year());
time.MM = to_string(timeLocal.date().month().as_number());
time.DD = to_string(timeLocal.date().day());
time.HH = to_string(timeLocal.time_of_day().hours());
time.mm = to_string(timeLocal.time_of_day().minutes());
time.ss = to_string(timeLocal.time_of_day().seconds());
return time;
}
catch(std::exception const& e)
{
return time;
}
return time;
}
timeInfo๋ผ๋ ๊ตฌ์กฐ์ฒด์ time ์ ๋ณด๋ฅผ YYYY/MM/DD/HH/mm/ss ๋ณ๋ก ๋ด์์ฃผ๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ํ์ํ ์๊ฐ ํ์์ ๋ง๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค ๐
๐ ์ฐธ๊ณ ์๋ฃ
'๐ C๋ C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Boost::program_options ์ฌ์ฉ๊ธฐ (0) | 2022.07.26 |
---|---|
์ ์ฒ๋ฆฌ๊ธฐ(preprocessor)์ ๋งคํฌ๋ก(macro) (0) | 2022.02.07 |
Error ํด๊ฒฐ: boost::shared_ptr<boost::asio::io_context>::operator* (0) | 2022.02.04 |
STRUCT์ UNION์ ์์๋ณด์ (0) | 2021.07.12 |
C++ ์ค๋งํธ ํฌ์ธํฐ๋ฅผ ์์๋ณด์ - (2) shared_ptr (0) | 2021.06.25 |