Tôi đang thực thi mã bên dưới.Hành vi gây nhầm lẫn của hàm mktime(): tăng tm_hour đếm theo
int main()
{
struct tm storage={0,0,0,0,0,0,0,0,0};
char *p = NULL;
p = (char *)strptime("2012-08-25 12:23:12","%Y-%m-%d %H:%M:%S",&storage);
char buff[1024]={0};
strftime(buff,1024,"%Y-%m-%d %H:%M:%S",&storage);
cout << buff << endl;
storage.tm_sec += 20;
strftime(buff,1024,"%Y-%m-%d %H:%M:%S",&storage);
cout << buff << endl;
mktime(&storage);
strftime(buff,1024,"%Y-%m-%d %H:%M:%S",&storage);
cout << buff << endl;
return 0;
}
Nếu ở trên Chương trình được thực thi, Nó in '2012-08-25 13:23:32' thay vì '2012-08-25 12:23:32'. Xin vui lòng giúp, tại sao nó tăng tm_hour giá trị. Điều này hoạt động chính xác nếu tôi đặt ngày đầu vào là '2012-02-25 12:23:32' trong chương trình, điều này gây nhầm lẫn.
Output ->
[[email protected] root]$ ./a.out
2012-08-25 12:23:12
2012-08-25 12:23:32
2012-08-25 13:23:32
[[email protected] root]$
ngày Thông tin trên hệ thống của tôi, ->
[[email protected] root]$ date
Sat Aug 25 08:28:26 EDT 2012
Mã không cho biết giờ đang tăng.Để làm điều đó, hiển thị kết quả đến từ 'strptime' cũng như kết quả đến từ cuộc gọi đến' mktime'. Điều đó sẽ giúp pin xuống những gì thực sự xảy ra. –
Xin lỗi, tôi không thể phân tích cú pháp đó. Nó có ba kết quả đầu ra thay vì một, nhưng không có dấu hiệu cho thấy chúng xuất phát từ đâu. Vui lòng cập nhật mã mẫu để khớp với đầu ra. –