年、ユリウス日 (年日)、時、分、観測値を含む 2 つの文字列を読み取ります。
sscanf を使用して関連する変数を取り出します。
sscanf(tide_str1.c_str(), "%d %d %d %d %Lf", &y1, &j1, &h1, &m1, &obs1);
sscanf(tide_str2.c_str(), "%d %d %d %d %Lf", &y2, &j2, &h2, &m2, &obs2);
この特定のデータ セットの場合、値は 2011 083 23 22 1.1 です。
次に、tm 構造体を作成して入力し、mktime を実行します。その間にその日の cout 呼び出しを行うと、083 から 364 に変わります。
int y1=2011, j1=83, h1=23, m1=22;
struct tm time_struct = {0, 0, 0, 0, 0, 0, 0, 0, 0}, *time_ptr = &time_struct;
time_t tv_min;
time_struct.tm_year = y1 - 1900;
time_struct.tm_yday = j1;
cout << time_struct.tm_yday << endl;
time_struct.tm_hour = h1;
time_struct.tm_min = m1;
time_struct.tm_isdst = -1;
cout << time_struct.tm_yday << endl;
tv_min = mktime(time_ptr);
cout << time_struct.tm_yday << endl;
何故ですか?tm_mday と tm_mon が 0 に設定されているためでしょうか。最初はすべてをゼロに初期化しないようにしましたが、mktime は -1 を返しました。月と月の日がわからず年日しかわからない場合、どうすればよいでしょうか?