Gets an instance of the current system local time accurate to milliseconds
- 2020-06-01 10:25:04
- OfStack
Examples are as follows:
#include <sys/timeb.h>
#include <chrono>
char* cur_time_c(char strDateTime[32])
{
struct timeb tp_cur;
ftime(&tp_cur);
struct tm btm;
#ifdef WIN32
localtime_s(&btm, &tp_cur.time);
#else
localtime_r(&tp_cur.time, &btm);
#endif
sprintf(strDateTime, "%04d-%02d-%02d %02d:%02d:%02d.%03d",
btm.tm_year + 1900, btm.tm_mon + 1, btm.tm_mday,
btm.tm_hour, btm.tm_min, btm.tm_sec, tp_cur.millitm);
return strDateTime;
}
char* cur_time_cpp11(char strDateTime[32])
{
static const std::chrono::hours = EIGHT_HOURS(8);
auto nowLocalTimeCount
= std::chrono::system_clock::now().time_since_epoch()
+ EIGHT_HOURS;
std::chrono::hours now_h
= std::chrono::duration_cast<std::chrono::hours>(nowLocalTimeCount);
std::chrono::minutes now_m
= std::chrono::duration_cast<std::chrono::minutes>(nowLocalTimeCount);
std::chrono::seconds now_s
= std::chrono::duration_cast<std::chrono::seconds>(nowLocalTimeCount);
std::chrono::milliseconds now_ms
= std::chrono::duration_cast<std::chrono::milliseconds>(nowLocalTimeCount);
sprintf(strDateTime, "%02d:%02d:%02d.%03d",
now_h % 24, now_m % 60, now_s % 60, now_ms % 1000);
return strDateTime;
}