1 #include <sys/timeb.h> 2 #include <chrono> 3 4 char* cur_time_c(char strDateTime[32]) 5 { 6 struct timeb tp_cur; 7 ftime(&tp_cur); 8 9 struct tm btm; 10 11 #ifdef WIN32 12 localtime_s(&btm, &tp_cur.time); 13 #else 14 localtime_r(&tp_cur.time, &btm); 15 #endif 16 17 sprintf(strDateTime, "%04d-%02d-%02d %02d:%02d:%02d.%03d", 18 btm.tm_year + 1900, btm.tm_mon + 1, btm.tm_mday, 19 btm.tm_hour, btm.tm_min, btm.tm_sec, tp_cur.millitm); 20 21 return strDateTime; 22 } 23 24 25 char* cur_time_cpp11(char strDateTime[32]) 26 { 27 static const std::chrono::hours = EIGHT_HOURS(8); 28 29 auto nowLocalTimeCount 30 = std::chrono::system_clock::now().time_since_epoch() 31 + EIGHT_HOURS; 32 33 std::chrono::hours now_h 34 = std::chrono::duration_cast<std::chrono::hours>(nowLocalTimeCount); 35 std::chrono::minutes now_m 36 = std::chrono::duration_cast<std::chrono::minutes>(nowLocalTimeCount); 37 std::chrono::seconds now_s 38 = std::chrono::duration_cast<std::chrono::seconds>(nowLocalTimeCount); 39 std::chrono::milliseconds now_ms 40 = std::chrono::duration_cast<std::chrono::milliseconds>(nowLocalTimeCount); 41 42 sprintf(strDateTime, "%02d:%02d:%02d.%03d", 43 now_h % 24, now_m % 60, now_s % 60, now_ms % 1000); 44 45 return strDateTime; 46 }