私は、年、ユリウス日(年の日)、時、分、および観測という2つの文字列を読みました。私はsscanf関数使用して、関連する変数を引き出すmktime()がtm構造体の年の日を変更するのはなぜですか?
:この特定のデータ・セットの場合は
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を実行しますその間に叫び声が鳴り、それは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を返しました。月と日ではなく、年の日だけを知っているならば、私はどうやって別のことをしなければなりませんか?
年の日は時々*誤っ*「ユリウス日」と呼ばれています。実際、[Julian Day](http://en.wikipedia.org/wiki/Julian_day)の数字は、4713年1月1日からの紀元前の日数です。それは天文学で使用されています。 –
はい、しかし、それは実際には正確であるために、特定の職業内で広く(誤って)使用されています。フィールド内の誰もが同じジャージンを使用している限り、コミュニケーションは起こります。 – RuQu