在使用getdynamictimezoneinformation函数时,如何将这两个日期结构转换为本地日期/时间形式。


n 使用 GetDynamicTimeZoneInformation(&dtzi) 函数,并在 ‘dtzi’ 结构中,它告诉
无论您是否处于夏令时以及夏令时何时开始,通过
这两个日期。 该函数的返回值也告诉您相同的信息。
但是有人如何转换这些夏令时日期和/或标准日期日期
结构为可读的本地日期/时间形式。 请问这在“C”中是如何完成的? 我知道那里
一定要进行一些转换,但是如何转换呢? 不过还是谢谢你的时间。

我尝试过的:

试错法。 使用找到的例子,然后将找到的想法应用到问题上。 有时它不太正常工作,或者根本不起作用。

解决方案1

我在这里假设你正在谈论将两者转换 SYSTEMTIME 结构中的 DYNAMIC_TIME_ZONE_INFORMATION 目的。 为了实现这一目标,我相信您将首先将 SYSTEMTIME 使用结构到本地文件时间 SystemTimeToLocalFileTime 功能。 完成此操作后,您将使用 FileTimeToSystemTime 将本地文件时间转换回 SYSTEMTIME 表示当地时间的日期的结构。 它可能看起来像这样:

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

请注意,我只是在此处的编辑器中创建此方法,因此这里可能有一两个拼写错误。

コメント

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