|  | @@ -0,0 +1,125 @@
 | 
	
		
			
				|  |  | +#include "util.h"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#include <time.h>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#if defined(WIN32)
 | 
	
		
			
				|  |  | +    #include <WinSock2.h>
 | 
	
		
			
				|  |  | +    #include <Windows.h>
 | 
	
		
			
				|  |  | +    #include <direct.h>
 | 
	
		
			
				|  |  | +    #include <io.h> //C (Windows)    access
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +    #include <sys/time.h>
 | 
	
		
			
				|  |  | +    #include <stdio.h>
 | 
	
		
			
				|  |  | +    #include <unistd.h>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void Sleep(long mSeconds)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    usleep(mSeconds * 1000);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void mSleep(int mSecond)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +#if defined(WIN32)
 | 
	
		
			
				|  |  | +    Sleep(mSecond);
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +    usleep(mSecond * 1000);
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +namespace Util
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +uint64_t GetUtcTime()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    /* 获取本地utc时间 */
 | 
	
		
			
				|  |  | +    struct timeval tv;
 | 
	
		
			
				|  |  | +    gettimeofday(&tv, NULL);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//    /* utc时间 单位 秒*/
 | 
	
		
			
				|  |  | +//    long timestamp = tv.tv_sec;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /* utc时间 单位 毫秒 */
 | 
	
		
			
				|  |  | +    uint64_t timestamp = (uint64_t)tv.tv_sec*1000 + tv.tv_usec/1000;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//    /* utc时间 单位 微秒 */
 | 
	
		
			
				|  |  | +//    long long timestamp = tv.tv_sec*1000*1000 + tv.tv_usec;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return timestamp;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +uint64_t GetLocalTime() 
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    struct timeval tv;
 | 
	
		
			
				|  |  | +    gettimeofday(&tv, NULL);
 | 
	
		
			
				|  |  | +    uint64_t current_time_ms = (uint64_t)tv.tv_sec * 1000 + tv.tv_usec / 1000;
 | 
	
		
			
				|  |  | +    // printf("Current timestamp in milliseconds: %llu\n", current_time_ms);
 | 
	
		
			
				|  |  | +    return current_time_ms;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +uint64_t GetTodayUtcTime()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +//    auto getTimeStr = [=](struct tm* t)
 | 
	
		
			
				|  |  | +//    {
 | 
	
		
			
				|  |  | +//        char tStr[50] = {0};
 | 
	
		
			
				|  |  | +//        snprintf(tStr, sizeof(tStr), "%04d-%02d-%02d %02d:%02d:%02d", (1900 + t->tm_year), ( 1 + t->tm_mon), t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
 | 
	
		
			
				|  |  | +//        return std::string(tStr);
 | 
	
		
			
				|  |  | +//    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    time_t ts = time(nullptr);
 | 
	
		
			
				|  |  | +    struct tm* tUTC = gmtime(&ts);
 | 
	
		
			
				|  |  | +//    std::cout<<"UTC time:"<<getTimeStr(tUTC)<<std::endl;
 | 
	
		
			
				|  |  | +//    struct tm* tLocal = localtime(&ts);
 | 
	
		
			
				|  |  | +//    std::cout<<"Local time:"<<getTimeStr(tLocal)<<std::endl;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#if 1
 | 
	
		
			
				|  |  | +    tUTC->tm_hour = 0;
 | 
	
		
			
				|  |  | +    tUTC->tm_min = 0;
 | 
	
		
			
				|  |  | +    tUTC->tm_sec = 0;
 | 
	
		
			
				|  |  | +    uint64_t timestamp = (uint64_t)mktime(tUTC) * 1000;
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +    uint64_t timestamp = (AppConfig::GetUtcTime() - tUTC->tm_hour * 3600000 - tUTC->tm_min * 60000 - tUTC->tm_sec * 1000);
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return timestamp;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +uint64_t GetUtcTimeInCurWeek()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    /* 获取本地utc时间 */
 | 
	
		
			
				|  |  | +    struct timeval tv;
 | 
	
		
			
				|  |  | +    gettimeofday(&tv, NULL);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /* utc时间 单位 秒*/
 | 
	
		
			
				|  |  | +    uint64_t timestamp = tv.tv_usec / 1000; //获取毫秒数
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    time_t ts = time(nullptr);
 | 
	
		
			
				|  |  | +    struct tm* tUTC = gmtime(&ts);
 | 
	
		
			
				|  |  | +    timestamp += (tUTC->tm_hour * 3600000 + tUTC->tm_min * 60000 + tUTC->tm_sec * 1000); //今天的时间戳
 | 
	
		
			
				|  |  | +    timestamp += tUTC->tm_wday * 86400000; //本周的时间戳
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return timestamp;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +std::string getLocalTimeInStringFormat()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    struct tm nowtime;
 | 
	
		
			
				|  |  | +    struct timeval tv;
 | 
	
		
			
				|  |  | +    char time_now[128] = {0};
 | 
	
		
			
				|  |  | +    gettimeofday(&tv, NULL);
 | 
	
		
			
				|  |  | +    localtime_r(&tv.tv_sec, &nowtime);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    sprintf(time_now, "%4d%02d%02d%02d%02d%02d%03d",
 | 
	
		
			
				|  |  | +            nowtime.tm_year + 1900,
 | 
	
		
			
				|  |  | +            nowtime.tm_mon + 1,
 | 
	
		
			
				|  |  | +            nowtime.tm_mday,
 | 
	
		
			
				|  |  | +            nowtime.tm_hour,
 | 
	
		
			
				|  |  | +            nowtime.tm_min,
 | 
	
		
			
				|  |  | +            nowtime.tm_sec,
 | 
	
		
			
				|  |  | +            (int) (tv.tv_usec / 1000));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return std::string(time_now);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +};
 |