歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C/C++中time_t、tm、字符串之間的轉換

C/C++中time_t、tm、字符串之間的轉換

日期:2017/3/1 10:07:57   编辑:Linux編程

1、字符串到time_t的轉換

  1. BOOL GetStrFromTime(time_t iTimeStamp, char *pszTime)
  2. {
  3. tm *pTmp = localtime(&iTimeStamp);
  4. if (pTmp == NULL)
  5. {
  6. return FALSE;
  7. }
  8. sprintf(pszTime, "%d-%d-%d %d:%d:%d", pTmp->tm_year + 1900, pTmp->tm_mon + 1, pTmp->tm_mday, pTmp->tm_hour, pTmp->tm_min, pTmp->tm_sec);
  9. return TRUE;
  10. }

這裡的time_t可以傳入一個unsigned int類型的參數,其表示的含義是1970.1.1 0:0:0開始計時的秒數,返回字符串結構如“2011-08-05 00:00:00”。

2、字符串到tm到time_t的轉換

  1. unsigned int GetTimeStampByStr( const char* pDate, int32 iNameSize )
  2. {
  3. const char* pStart = pDate;
  4. char szYear[5], szMonth[3], szDay[3], szHour[3], szMin[3], szSec[3];
  5. szYear[0] = *pDate++;
  6. szYear[1] = *pDate++;
  7. szYear[2] = *pDate++;
  8. szYear[3] = *pDate++;
  9. szYear[4] = 0x0;
  10. ++pDate;
  11. szMonth[0] = *pDate++;
  12. szMonth[1] = *pDate++;
  13. szMonth[2] = 0x0;
  14. ++pDate;
  15. szDay[0] = *pDate++;
  16. szDay[1] = *pDate++;
  17. szDay[2] = 0x0;
  18. ++pDate;
  19. szHour[0] = *pDate++;
  20. szHour[1] = *pDate++;
  21. szHour[2] = 0x0;
  22. ++pDate;
  23. szMin[0] = *pDate++;
  24. szMin[1] = *pDate++;
  25. szMin[2] = 0x0;
  26. ++pDate;
  27. szSec[0] = *pDate++;
  28. szSec[1] = *pDate++;
  29. szSec[2] = 0x0;
  30. tm tmObj;
  31. tmObj.tm_year = atoi(szYear)-1900;
  32. tmObj.tm_mon = atoi(szMonth)-1;
  33. tmObj.tm_mday = atoi(szDay);
  34. tmObj.tm_hour = atoi(szHour);
  35. tmObj.tm_min = atoi(szMin);
  36. tmObj.tm_sec = atoi(szSec);
  37. tmObj.tm_isdst= -1;
  38. return mktime(&tmObj);
  39. }

這裡是完成將諸如"2011-01-01 00:00:00"格式的日期字符串轉換為時間戳,更多關於<time.h>中提供的函數很簡單,網上資料也很多,故不再贅述。

Copyright © Linux教程網 All Rights Reserved