Khi sử dụng hàm getdynamictimezoneinformation, cách chuyển đổi hai cấu trúc ngày này sang dạng ngày/giờ cục bộ.

lập trình


n bằng cách sử dụng hàm GetDynamicTimeZoneInformation(&dtzi) và trong cấu trúc ‘dtzi’, nó cho biết
cho dù bạn có đang ở trong Giờ tiết kiệm ánh sáng ban ngày hay không và khi nào chúng sẽ bắt đầu, thông qua
hai ngày này. Giá trị trả về của hàm này cũng cho bạn biết thông tin tương tự.
Nhưng làm cách nào để ai đó chuyển đổi các ngày ban ngày và/hoặc ngày chuẩn này
cấu trúc thành các dạng ngày/giờ cục bộ có thể đọc được. Tôi có thể hỏi làm thế nào điều này được thực hiện trong “C”. Tôi biết chỗ đó
phải có một số chuyển đổi, nhưng bằng cách nào? Tuy nhiên, cảm ơn và vì thời gian của bạn.

Những gì tôi đã thử:

phương pháp thử và sai. Sử dụng các ví dụ tìm được và sau đó áp dụng ý tưởng tìm được vào vấn đề. Đôi khi nó không hoạt động tốt và không hề hoạt động.

Giải pháp 1

Tôi đang giả định ở đây rằng bạn đang nói về việc chuyển đổi cả hai SYSTEMTIME các cấu trúc trong DYNAMIC_TIME_ZONE_INFORMATION sự vật. Để thực hiện điều này, tôi tin rằng bạn sẽ bắt đầu bằng cách chuyển đổi SYSTEMTIME cấu trúc thành một tập tin cục bộ theo thời gian bằng cách sử dụng SystemTimeToLocalFileTime chức năng. Khi bạn đã thực hiện xong việc này, bạn sẽ sử dụng FileTimeToSystemTime để chuyển đổi thời gian tập tin cục bộ trở lại SYSTEMTIME cấu trúc đại diện cho ngày theo giờ địa phương. Nó có thể trông giống như thế này:

C
SYSTEMTIME standardDate = timeZoneInfo.StandardDate;

FILETIME localFileTime;
SystemTimeToLocalFileTime(&standardDate, &localFileTime);

SYSTEMTIME localStandardDate;
FileTimeToSystemTime(&localFileTime, &localStandardDate);

char dateString[20];
sprintf(dateString, "%d-%02d-%02dT%02d:%02d:%02dT", localStandardDate.wYear, localStandardDate.wMonth, localStandardDate.wDay, localStandardDate.wHour, localStandardDate.wMinute, localStandardDate.wSecond);

Lưu ý, tôi chỉ đang tạo phương thức này trong trình chỉnh sửa ở đây, vì vậy có thể có một hoặc hai lỗi đánh máy ở đây.

コメント

タイトルとURLをコピーしました