您的位置:首页 > 其它

SYSTEMTIME 转化为 tm struct 并根据本地的设置输出

2015-04-13 15:17 85 查看



BOOL GetTimeInf(TCHAR *ptszTimeFormatCtrl, TCHAR *ptszTimeBuf, DWORD dwBufLen)
{
// 0. variable definition
SYSTEMTIME Reg_systime; // System time from regist
_locale_t locale = NULL; // local to determine time show style
struct tm Reg_showtime; // Reg show time from System time

// 1. Init Reg_systime
ZeroMemory(&Reg_systime, 0, sizeof(SYSTEMTIME));
DWORD dwTimeLen = sizeof(SYSTEMTIME);

// 2. Read system time from reg
GetSystemTime(&Reg_systime);
// 3. Get Reg_showtime from Reg_systime
// month and year need to modify, others are the same
Reg_showtime.tm_sec = Reg_systime.wSecond; // Second
Reg_showtime.tm_min = Reg_systime.wMinute; // Minute
Reg_showtime.tm_hour = Reg_systime.wHour; // Hour
Reg_showtime.tm_mday = Reg_systime.wDay; // Day
Reg_showtime.tm_mon = Reg_systime.wMonth -1; // Month
Reg_showtime.tm_year = Reg_systime.wYear - 1900; // Year
Reg_showtime.tm_wday = Reg_systime.wDayOfWeek; // Day of week
// 4. Get the implementation-defined native environment
locale = _create_locale(LC_ALL,"");
if (locale == NULL)
{
OutputDebugString(TEXT("_create_locale() failed\r\n"));
return FALSE;
}
// 5. Set ptszTimeBuf value
_tcsftime_l(ptszTimeBuf, dwBufLen, ptszTimeFormatCtrl, &Reg_showtime, locale);
if (locale)
{
_free_locale(locale);
}
return TURE;
}

用法:

int _tmain(int argc, _TCHAR* argv[])
{
TCHAR *ptszTimeFormat = TEXT("%#c"); //TEXT("%c")
TCHAR tszTimeBuf[100] = {0};
BOOL bres = GetTimeFromInf(ptszTimeFormat, tszTimeBuf, 100);
if (!bres)
{
OutputDebugString(TEXT("GetTimeFromRegist failed !\r\n"));
return 0;
}
TCHAR tszDebugMsg[100] ={0};
_stprintf_s(tszDebugMsg, 100, TEXT("%s Format UTC Time is %s\r\n"), ptszTimeFormat, tszTimeBuf);
MessageBox(NULL, tszDebugMsg, TEXT("test"), MB_OK);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C Plus
相关文章推荐