私のプログラムでは、ユーザーが extjs フォームで日付と時刻を選択すると、データがサーバー側 (c++ プログラム) に送信されます。サーバー プログラムでは、日付と時刻が次のようにシステムに適用されます。
int main(){
string date = "2013-08-28T00:00:00";
string newtime = "09:12";
time_t mytime = time(0);
struct tm* tm_ptr = localtime(&mytime);
if (tm_ptr)
{
tm_ptr->tm_mon = atoi(date.substr(5,2).c_str()) - 1;
tm_ptr->tm_mday = atoi(date.substr(8,2).c_str());
tm_ptr->tm_year = atoi(date.substr(0,4).c_str());
tm_ptr->tm_min = atoi(newtime.substr(3,2).c_str());
tm_ptr->tm_hour = atoi(newtime.substr(0,2).c_str());
printf("%d\n%d\n%d\n%d\n%d\n", tm_ptr->tm_mon,tm_ptr->tm_mday,tm_ptr->tm_year,tm_ptr->tm_min,tm_ptr->tm_hour);
const struct timeval tv = {mktime(tm_ptr), 0};
settimeofday(&tv, 0);
}
return 0;
}
しかし、このコードを実行するとシステムがクラッシュします! 日付と時刻を適用する別のコードがあります。
int main(){
string date = "2013-08-28T00:00:00";
string newtime = "09:12";
string newdate = "";
string monthnum = date.substr(5,2);
string month = "";
if(strcmp(monthnum.c_str(),"01") == 0) month = "Jan";
else if(strcmp(monthnum.c_str(),"02") == 0) month = "Feb";
else if(strcmp(monthnum.c_str(),"03") == 0) month = "Mar";
else if(strcmp(monthnum.c_str(),"04") == 0) month = "Apr";
else if(strcmp(monthnum.c_str(),"05") == 0) month = "May";
else if(strcmp(monthnum.c_str(),"06") == 0) month = "Jun";
else if(strcmp(monthnum.c_str(),"07") == 0) month = "Jul";
else if(strcmp(monthnum.c_str(),"08") == 0) month = "Aug";
else if(strcmp(monthnum.c_str(),"09") == 0) month = "Sep";
else if(strcmp(monthnum.c_str(),"10") == 0) month = "Oct";
else if(strcmp(monthnum.c_str(),"11") == 0) month = "Nov";
else if(strcmp(monthnum.c_str(),"12") == 0) month = "Dec";
newdate = "\"" + month + " " + date.substr(8,2) + " " + date.substr(0,4) + " " + newtime + "\"";
system("date --set newdate");
return 0;
}
このコードを実行すると、次のようなエラーが発生しました: 日付: 無効な日付 "newdate"
これらのコードの問題が理解できません!