0

time_t から tm へ、および tm から time_t への 2 つの変換関数を実行する必要があります。

これは最初です:

string2time(string str){

time_t rawtime;
time(&rawtime);
tm* timeInfo = localtime(&rawtime);

stringstream ss(str);
string date;
string time;
getline(ss,date,' ');
getline(ss,time,' ');

string word;
//now we work with date..
stringstream sdate(date);

getline(sdate,word,'-');
timeInfo->tm_year = atoi(word.c_str()) -1900;

getline(sdate,word,'-');
timeInfo->tm_mon = atoi(word.c_str())-1;

getline(sdate,word,'-');
timeInfo->tm_mday = atoi(word.c_str());

//and time...
stringstream stime(time);

getline(stime,word,':');
timeInfo->tm_hour = atoi(word.c_str());

getline(stime,word,':');
timeInfo->tm_min = atoi(word.c_str());

getline(stime,word,':');
timeInfo->tm_sec = atoi(word.c_str());

return mktime(timeInfo);
       }

そしてこれは2番目です:

time2str(time_t t){
tm* myT;

myT = localtime(&t);
    //here i have to explore myT structure in order to build a proper string

   }

とにかく間違った値を取得しました.. 2013-04-21 18:16:29 を取得する tm 構造体の 2013-03-10 00:00:00 から始めます...なぜですか?

編集:いくつかの進歩を遂げました!このコードは常に機能しますが、時間が 00 の場合は!

4

1 に答える 1

0

解決しました。文字列変換の単なるエラーでした...ご迷惑をおかけして申し訳ありません。

于 2013-04-22T09:19:38.663 に答える