获取本地时间的多种格式函数

  1. int GetTimeString( string& strDate , const unsigned int cStringFormat )
  2. {
  3.     char sTime[40];
  4.     time_t t = time(NULL);
  5.     struct tm tm1;
  6.     localtime_r(&t, &tm1);
  7.     
  8.     switch(cStringFormat)
  9.     {
  10.     case 0: // today is 2008-01-10. return 20080110174233
  11.         sprintf( sTime, "%.4d%.2d%.2d%.2d%.2d%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday, tm1.tm_hour, tm1.tm_min, tm1.tm_sec ); 
  12.         strDate = sTime;
  13.         break;
  14.         
  15.     case 1: // today is 2008-01-10. return 17:42:33 01/10
  16.         sprintf( sTime, "%.2d:%.2d:%.2d %.2d/%.2d", tm1.tm_hour, tm1.tm_min, tm1.tm_sec, tm1.tm_mon+1, tm1.tm_mday );
  17.         strDate = sTime;
  18.         break;
  19.         
  20.     case 2: // today is 2008-01-10. return 20070110
  21.         sprintf( sTime, "%.4d%.2d%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  22.         strDate = sTime;
  23.         break;
  24.         
  25.     case 3: // today is 2008-01-10. return 2008-01-10
  26.         sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  27.         strDate = sTime;
  28.         break;
  29.         
  30.     case 4: // today is 2008-01-10. return 2008-01-11
  31.         t = time(NULL) + 86400;
  32.         localtime_r(&t, &tm1);
  33.         sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  34.         strDate = sTime;
  35.         break;
  36.     
  37.     case 5: // today is 2008-01-10. return 2008-01-17
  38.         t = time(NULL) + 86400*7;
  39.         localtime_r(&t, &tm1);
  40.         sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  41.         strDate = sTime;
  42.         break;
  43.     case 6: // today is 2008-01-10. return 2008-01-03
  44.         t = time(NULL) - 86400*7;
  45.         localtime_r(&t, &tm1);
  46.         sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  47.         strDate = sTime;
  48.         break;
  49.     case 7: // today is 2008-01-10. return 2008-02-01
  50.         if((tm1.tm_mon+1)<12)
  51.             sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+2, 1 );
  52.         else
  53.             sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year+1, 1, 1 );
  54.         
  55.         strDate = sTime;
  56.         break;
  57.     case 8: // today is 2008-01-10. return 2008-01-01
  58.         sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, 1 );
  59.         strDate = sTime;
  60.         break;
  61.     case 9: // today is 2008-01-10. return month value: 01
  62.         sprintf( sTime, "%.2d", tm1.tm_mon+1 );
  63.         strDate = sTime;
  64.         break;
  65.     case 10: // today is 2008-01-10. return 20080109
  66.         t = time(NULL) - 86400;
  67.         localtime_r(&t, &tm1);
  68.         sprintf( sTime, "%.4d%.2d%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  69.         strDate = sTime;
  70.         break;
  71.     case 11: // today is 2008-01-10. return day of week, 0 is sunday, 6 is saturday
  72.         sprintf( sTime, "%d", tm1.tm_wday );
  73.         strDate = sTime;
  74.         break;
  75.     
  76.     case 12: // today is 2008-01-10. return 10
  77.         sprintf( sTime, "%.2d", tm1.tm_mday );
  78.         strDate = sTime;
  79.         break;
  80.     case 13: // today is 2008-01-10. return 2008-01-09
  81.         t = time(NULL) - 86400;
  82.         localtime_r(&t, &tm1);
  83.         sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  84.         strDate = sTime;
  85.         break;
  86.     case 14: // today is 2008-01-10. return 2008-01-09
  87.         t = time(NULL) - 86400;
  88.         localtime_r(&t, &tm1);
  89.         sprintf( sTime, "%.4d-%.2d-01", 1900+tm1.tm_year, tm1.tm_mon+1 );
  90.         strDate = sTime;
  91.         break;
  92.     
  93.     case 15: // today is 2008-01-10. return month value: 01
  94.         t = time(NULL) - 86400;
  95.         localtime_r(&t, &tm1);
  96.         sprintf( sTime, "%.2d", tm1.tm_mon+1 );
  97.         strDate = sTime;
  98.         break;
  99.     
  100.     case 16: // today is 2008-01-10. return 2008-01-03 00:00:00
  101.         t = time(NULL) - 86400*7;
  102.         localtime_r(&t, &tm1);
  103.         sprintf( sTime, "%.4d-%.2d-%.2d 00:00:00", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  104.         strDate = sTime;
  105.         break;
  106.     case 17: // today is 2008-01-10. return 2008-01-03 00:00:00
  107.         t = time(NULL) - 86400;
  108.         localtime_r(&t, &tm1);
  109.         sprintf( sTime, "%.4d-%.2d-%.2d 23:59:59", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  110.         strDate = sTime;
  111.         break;
  112.     case 18: // today is 2008-01-10. return 2008-01-09
  113.         t = time(NULL) - 86400*2;
  114.         localtime_r(&t, &tm1);
  115.         sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  116.         strDate = sTime;
  117.         break;
  118.     case 19: // today is 2008-01-10. return 2008-01-02
  119.         t = time(NULL) - 86400*8;
  120.         localtime_r(&t, &tm1);
  121.         sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  122.         strDate = sTime;
  123.         break;
  124.         
  125.     case 20: // today is 2008-01-15. return 2008-01-01
  126.         t = time(NULL) - 86400*14;
  127.         localtime_r(&t, &tm1);
  128.         sprintf( sTime, "%.4d-%.2d-%.2d", 1900+tm1.tm_year, tm1.tm_mon+1, tm1.tm_mday );
  129.         strDate = sTime;
  130.         break;
  131.     case 21: // today is 2008-07-01. return 2008-05-01 这里可能有错, 需要考虑闰年的情况,实际使用时要考虑一下
  132.         t = time(NULL) - 86400*64;
  133.         localtime_r(&t, &tm1);
  134.         sprintf( sTime, "%.4d-%.2d-01", 1900+tm1.tm_year, tm1.tm_mon+1 );
  135.         strDate = sTime;
  136.         break;
  137.     case 22:    // today is 2008-01-10. return 01; if today is 2008-01-01 will return 12
  138.         t = time(NULL) - 86400;
  139.         localtime_r(&t, &tm1);
  140.         sprintf( sTime, "%.2d", tm1.tm_mon+1);
  141.         strDate = sTime;
  142.         break;
  143.     default:    
  144.         return -1;
  145.     }
  146.     
  147.     return 0;   
  148. }
 

你可能感兴趣的:(null)