I read in two strings with a Year, the Julian Day (year day), hour, minute, and an observation.
I pull the relevant variables out using 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);
For this particular data set, the values are 2011 083 23 22 1.1
I then create and populate a tm structure, and run mktime, with cout calls on the day in between and it changes from 083 to 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;
Why is that? Is it because the tm_mday and and tm_mon are set to 0? I initially tried not initializing it all to zero, but then mktime returned -1. What should I be doing differently if I only know the year day and not the month and month day?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…