1 //计算某一天的前一天的日期 日期格式:YYYY-MM-DD 2 bool GetTheDayBefore(const std::string &strOneDate,std::string &TheDayBefore) 3 { 4 int iYear,iMonth,iDay; 5 if (10 != strOneDate.length()) //形如xxxx-xx-xx格式的日期长度为10 6 { 7 return false; 8 } 9 10 iYear = atoi(strOneDate.substr(0,4).c_str()); 11 iMonth = atoi(strOneDate.substr(5,2).c_str()); 12 iDay = atoi(strOneDate.substr(8,2).c_str()); 13 14 int iWeekDay = -1; 15 struct tm tTime; 16 time_t t_of_day; 17 tTime.tm_year=iYear-1900; 18 tTime.tm_mon=iMonth-1; 19 tTime.tm_mday=iDay; 20 tTime.tm_hour=0; 21 tTime.tm_min=0; 22 tTime.tm_sec=0; 23 tTime.tm_isdst=0; 24 t_of_day=mktime(&tTime); 25 localtime_s(&tTime, &t_of_day); 26 27 t_of_day = t_of_day - 24*3600; 28 localtime_s(&tTime, &t_of_day); 29 char buffer[Date_String_Size] = {0}; 30 sprintf_s(buffer, Date_String_Size, "%04d-%02d-%02d", tTime.tm_year+1900, tTime.tm_mon+1, tTime.tm_mday); 31 TheDayBefore = buffer; 32 33 return true; 34 }