Tôi đọc trong hai chuỗi với một Năm, Ngày Julian (ngày năm), giờ, phút và một quan sát.Tại sao mktime() thay đổi ngày của cấu trúc tm của tôi?
tôi kéo các biến có liên quan bằng cách sử dụng 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);
Đối với bộ dữ liệu đặc biệt này, các giá trị là 2011 083 23 22 1,1
sau đó tôi có thể tạo và cư một cấu trúc tm, và chạy mktime , với các cuộc gọi cout vào ngày ở giữa và thay đổi từ 083 đến 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;
Tại sao lại như vậy? Có phải vì tm_mday và tm_mon được đặt thành 0 không? Ban đầu tôi đã cố gắng không khởi tạo tất cả bằng không, nhưng sau đó mktime trả về -1. Tôi nên làm gì khác nếu tôi chỉ biết ngày trong năm chứ không phải ngày tháng và tháng?
Các ngày trong năm là đôi khi * sai * được gọi là một "Julian Day". Trên thực tế, số [Julian Day] (http://en.wikipedia.org/wiki/Julian_day) là số ngày kể từ ngày 1 tháng 1 năm 4713 trước Công nguyên; nó được sử dụng trong thiên văn học. –
Có, nhưng nó được sử dụng rộng rãi (không chính xác) trong một số ngành nghề nhất định, trong thực tế, là chính xác. Vì vậy, miễn là tất cả mọi người trong một lĩnh vực sử dụng cùng một thuật ngữ ... thông tin liên lạc xảy ra. – RuQu