// // Created by Scheaven on 2020/5/14. // #include "time_util.h" #include #include #include #include #include #include "stdlib.h" #include #include #include using namespace std; int get_run_time(struct timeval *result, struct timeval *begin, struct timeval * end) { if(begin->tv_sec > end->tv_sec) return -1; if((begin->tv_sec == end->tv_sec) && (begin->tv_usec > end->tv_usec)) return -2; result->tv_sec = end->tv_sec - begin->tv_sec; result->tv_usec = end->tv_usec - begin->tv_usec; if(result->tv_usec<0) { result->tv_sec--; result->tv_usec += 1000000; } return 0; } time_t strTime2unix(char* timeStamp) { struct tm tm; memset(&tm, 0, sizeof(tm)); sscanf(timeStamp, "%d-%d-%d %d:%d:%d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec); tm.tm_year -= 1900; tm.tm_mon--; return mktime(&tm); } long char_2_unix(char* str1) { char str[100]; // std::cout<< "==char_2_unix=%s:" << str1<< std::endl; strcpy(str, str1); const char *mySplit = "."; char *p; char *p1; char *p2; p1 = strtok(str, mySplit); p2 = strtok(NULL, mySplit); // std::cout<< "--p1=:" << p1 << " : " << p2 << std::endl; time_t t = strTime2unix(p1); // std::cout<< "char_2_unix=t=%s:" << t << std::endl; return t*1000+atoi(p2); } char* fa_getSysTime() { struct timeval tv; gettimeofday(&tv,NULL); struct tm* pTime; pTime = localtime(&tv.tv_sec); static char sTemp[30] = "0"; snprintf(sTemp, sizeof(sTemp), "%04d-%02d-%02d %02d:%02d:%02d:%03d", pTime->tm_year+1900, \ pTime->tm_mon+1, pTime->tm_mday, pTime->tm_hour, pTime->tm_min, pTime->tm_sec, \ tv.tv_usec/1000); char* TP = sTemp; return TP; } string random_int(size_t length) { long seed = (unsigned)time(NULL) + (unsigned)clock(); srand(seed); auto randchar= []() ->char { const char charset[] = "0123456789"; const size_t max_index = (sizeof(charset) - 1); return charset[rand()%max_index]; }; std::string str(length,0); std::generate_n(str.begin(),length,randchar); //SLOG::getInstance()->addLog(0, str + "------seed and id--init-----id:" + to_string(seed)); return str; } Timer* Timer::instance = NULL; Timer* Timer::getInstance() { if (instance==NULL) { instance = new Timer(); } return instance; } Timer::Timer():beg_(clock_::now()){} void Timer::reset() { beg_ = clock_::now(); } double Timer::elapsed() const { return std::chrono::duration_cast(clock_::now() - beg_).count(); } void Timer::out(std::string message) { double t = elapsed(); // std::cout << message << " elasped time:" << t << "ms" << std::endl; DEBUG((boost::format("%e: %f ms")%message %t).str()); reset(); } double Timer::get_duration() const { return elapsed(); }