最后发现居然是gmtime 影响的。。。
#include <iostream>
#include <vector>#include <time.h>
#include <stdio.h>
#include <string.h>using namespace std;void printStructTime(struct tm *tm_local)
{printf("%04d/%02d/%02d %02d:%02d:%02d %s\n",tm_local->tm_year + 1900, tm_local->tm_mon + 1,tm_local->tm_mday, tm_local->tm_hour,tm_local->tm_min, tm_local->tm_sec,tm_local->tm_zone);
}int main()
{// time_t timep;// struct tm *p;// time(&timep);// printf("time() : %d \n", timep);// p = localtime(&timep);// timep = mktime(p);// printf("time()->localtime()->mktime():%d\n", timep);// time_t nNow = time(NULL);// cout << nNow << endl;// struct tm *objTime1 = localtime(&nNow);// printStructTime(objTime1);// time_t nTime1 = mktime(objTime1);// cout << nTime1 << endl;time_t nNow = time(NULL);cout << nNow << endl;struct tm *objTime1 = localtime(&nNow);printStructTime(objTime1);time_t nTime1 = mktime(objTime1);cout << nTime1 << endl;struct tm *objTime2 = gmtime(&nNow);printStructTime(objTime2);time_t nTime2 = mktime(objTime2);cout << nTime2 << endl;// objTime1 = localtime(&nTime1);// printStructTime(objTime1);// objTime2 = gmtime(&nTime1);// printStructTime(objTime2);// objTime1->tm_isdst = 0;// nTime1 = mktime(objTime1);// nTime2 = mktime(objTime2);// cout << nTime1 << endl;// cout << nTime2 << endl;// // tm 结构体转时间戳// time_t nTime1 = mktime(objTime1);// cout << nTime1 << endl;// struct tm *objTime2;// objTime2 = localtime(&nTime1);// printStructTime(objTime2);// vector<string> objResult;// string strTest = "20201116032728_IPCAM_01.ps";// split(strTest, objResult, "_");// cout << objResult.at(0) << endl;// string strTime1 = objResult.at(0);// time_t nNow = time(NULL);// struct tm *objTime1 = gmtime(&nNow);// // 时间字符串转tm 结构体// strptime(strTime1.c_str(), "%Y%m%d%H%M%S", objTime1);// printStructTime(objTime1);// char tmp_time[128] = {0};// string strTime2;// // tm 结构体转时间字符串// strftime(tmp_time, 128, "%a, %d %b %Y %H:%M:%S %Z", objTime1);// strTime2 = tmp_time;// cout << strTime2 << endl;// // tm 结构体转时间戳// time_t nTime1 = mktime(objTime1);// cout << nTime1 << endl;// struct tm *objTime2;// objTime2 = gmtime(&nTime1);// printStructTime(objTime2);return 0;
}