opentime
1.0.0
跨平台多线程设计! OpenTime for C++,超级好用的Time!
OpenLinyou项目设计了一个跨平台的服务器框架。在 VS 或 XCode 中编写代码,无需任何更改即可在 Linux 上运行,甚至可以在 Android 和 iOS 上运行。 OpenLinyou:https://github.com/openlinyou
Linux和Android使用epoll,iOS和Mac使用kqueue,其他系统(Windows)使用select,因此io数量不能超过64。
请安装cmake工具。使用cmake,您可以构建VS或XCode项目并在VS或XCode上编译和运行它。源码:https://github.com/openlinyou/opentime
# Clone the project
git clone https://github.com/openlinyou/opentime
cd ./opentime
# Create a build project directory
mkdir build
cd build
cmake ..
# If it's win32, opentime.sln will appear in this directory. Click it to start VS for coding and debugging.
make
./test
# include < assert.h >
# include < iostream >
# include < vector >
# include < map >
# include < time.h >
# include " opentime.h "
int main ()
{
OpenTime openTime;
std::cout << " Current Unixtime: " << openTime. unixtime () << std::endl;
std::cout << " Current Date: " << openTime. toString () << std::endl;
int64_t thatTime = 1676704738 ;
openTime = thatTime;
assert (openTime. unixtime () == thatTime);
assert (openTime. toString () == " 2023-02-18 15:18:58 " );
openTime = " 2023-02-18 15:18:58 " ;
assert (openTime. unixtime () == thatTime);
assert (openTime. wday () == 6 );
openTime += 3600 * 24 * 2 ;
assert (openTime. toString () == " 2023-02-20 15:18:58 " );
thatTime = openTime. unixtime ();
assert (openTime. toGMT () == " Mon, 20 Feb 2023 15:18:58 GMT " );
openTime. fromGMT ( " Mon, 20 Feb 2023 15:18:58 GMT " );
assert (openTime. unixtime () == thatTime);
int64_t inttime = 20230218133755 ;
openTime. fromIntTime (inttime);
std::string strTime = openTime. toString ();
assert (strTime == " 2023-02-18 13:37:55 " );
// 2023-02-18 00:00:00
openTime = " 2023-02-18 15:18:58 " ;
int64_t alignTime = openTime. alignDay ();
strTime = OpenTime::ToString (alignTime);
assert (strTime == " 2023-02-18 00:00:00 " );
thatTime = 1642490337 ;
alignTime = OpenTime::AlignDay (thatTime);
strTime = OpenTime::ToString (alignTime);
assert (strTime == " 2022-01-18 00:00:00 " );
std::map< int64_t , std::vector<std::string>> testDatas = {
{ 1676698675 , { " 2023-02-18 13:37:55 " , " " , " 2023-02-18 13:37:55 " }},
{ 669274675 , { " 1991-03-18 13:37:55 " , " %Y_%M_%D " , " 1991_03_18 " }},
{ 1292614675 , { " 2010-12-18 03:37:55 " , " %Y_%M_%D_%h_%m_%s " , " 2010_12_18_03_37_55 " }},
{ 77693875 , { " 1972-06-18 13:37:55 " , " date:%h:%m:%s %Y/%M/%D%d " , " date:13:37:55 1972/06/18%d " }},
};
for ( auto & iter : testDatas)
{
int64_t timeStamp = iter. first ;
openTime = timeStamp;
auto & datas = iter. second ;
assert (openTime. toString () == datas[ 0 ]);
std::string ret = openTime. toString (datas[ 1 ]);
assert (ret == datas[ 2 ]);
openTime. fromString (ret, datas[ 1 ]);
assert (openTime. unixtime () == timeStamp);
}
// sleep 1 second
OpenTime::Sleep ( 1000 );
int64_t timeStamp = OpenTime::Unixtime ();
std::cout << " Current timeStamp: " << OpenTime (timeStamp). toString () << std::endl;
int64_t milliTimeStamp = OpenTime::MilliUnixtime ();
std::cout << " Current milliTimeStamp: " << OpenTime (milliTimeStamp / 1000 ). toString (milliTimeStamp % 1000 ) << std::endl;
return 0 ;
}