歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

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.      
  5.    char szYear[5], szMonth[3], szDay[3], szHour[3], szMin[3], szSec[3]; 
  6.      
  7.    szYear[0]   = *pDate++; 
  8.    szYear[1]   = *pDate++; 
  9.    szYear[2]   = *pDate++; 
  10.    szYear[3]   = *pDate++; 
  11.    szYear[4]   = 0x0; 
  12.      
  13.    ++pDate; 
  14.      
  15.    szMonth[0]  = *pDate++; 
  16.    szMonth[1]  = *pDate++; 
  17.    szMonth[2]  = 0x0; 
  18.      
  19.    ++pDate; 
  20.      
  21.    szDay[0]    = *pDate++;   
  22.    szDay[1]    = *pDate++; 
  23.    szDay[2]    = 0x0; 
  24.      
  25.    ++pDate; 
  26.      
  27.    szHour[0]   = *pDate++; 
  28.    szHour[1]   = *pDate++; 
  29.    szHour[2]   = 0x0; 
  30.      
  31.    ++pDate; 
  32.      
  33.    szMin[0]    = *pDate++; 
  34.    szMin[1]    = *pDate++; 
  35.    szMin[2]    = 0x0; 
  36.      
  37.    ++pDate; 
  38.      
  39.    szSec[0]    = *pDate++; 
  40.    szSec[1]    = *pDate++; 
  41.    szSec[2]    = 0x0; 
  42.      
  43.    tm tmObj; 
  44.      
  45.    tmObj.tm_year = atoi(szYear)-1900; 
  46.    tmObj.tm_mon  = atoi(szMonth)-1; 
  47.    tmObj.tm_mday = atoi(szDay); 
  48.    tmObj.tm_hour = atoi(szHour); 
  49.    tmObj.tm_min  = atoi(szMin); 
  50.    tmObj.tm_sec  = atoi(szSec); 
  51.    tmObj.tm_isdst= -1; 
  52.      
  53.    return mktime(&tmObj); 
  54. } 

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

Copyright © Linux教程網 All Rights Reserved