في استخدام وظيفة getdynamictimezoneinformation، كيفية تحويل بنيتي التاريخ هذين إلى نموذج التاريخ/الوقت المحلي.


n باستخدام الدالة GetDynamicTimeZoneInformation(&dtzi)، وضمن البنية “dtzi”، يتم إخبارنا
سواء كنت في التوقيت الصيفي أم لا ومتى سيبدأ، عبر
هذين التاريخين. تخبرك القيمة المرجعة لهذه الوظيفة أيضًا بنفس المعلومات.
ولكن كيف يمكن لشخص ما أن يقوم بتحويل تاريخ ضوء النهار و/أو تاريخ التاريخ القياسي
الهياكل في نماذج التاريخ/الوقت المحلية القابلة للقراءة. هل لي أن أسأل كيف يتم ذلك في “C”. انا اعرف هناك
يجب أن يكون هناك بعض التحويلات، ولكن كيف؟ شكرا رغم ذلك، وعلى وقتك.

ما حاولت:

طريقة التجربة والخطأ. استخدام الأمثلة الموجودة ثم تطبيق الفكرة الموجودة على المشكلة. في بعض الأحيان لا يعمل الأمر بشكل صحيح تمامًا ولا يعمل على الإطلاق.

الحل 1

أفترض هنا أنك تتحدث عن تحويل الاثنين SYSTEMTIME الهياكل في DYNAMIC_TIME_ZONE_INFORMATION هدف. لتحقيق ذلك، أعتقد أنك ستبدأ بتحويل ملف SYSTEMTIME هيكل لوقت ملف محلي باستخدام SystemTimeToLocalFileTime وظيفة. بمجرد الانتهاء من ذلك، سوف تستخدم FileTimeToSystemTime لتحويل وقت الملف المحلي مرة أخرى إلى ملف SYSTEMTIME هيكل يمثل التاريخ بالتوقيت المحلي. قد يبدو الأمر كالتالي:

ج
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);

لاحظ أنني أقوم فقط بإنشاء هذه الطريقة في المحرر هنا، لذلك ربما يكون هناك خطأ مطبعي أو خطأين هنا.

コメント

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