/* * LOCALE.C - locale handling. * * * History: * * 09-Jan-1999 (Eric Kohl) * Started. * * 20-Jan-1999 (Eric Kohl) * Unicode safe! */ #include TCHAR cDateSeparator; TCHAR cTimeSeparator; TCHAR cThousandSeparator; TCHAR cDecimalSeparator; INT nDateFormat; INT nTimeFormat; INT nNumberGroups; VOID InitLocale (VOID) { TCHAR szBuffer[256]; /* date settings */ GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SDATE, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])); cDateSeparator = szBuffer[0]; GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_IDATE | LOCALE_RETURN_NUMBER, (LPTSTR)&nDateFormat, sizeof(nDateFormat) / sizeof(TCHAR)); /* time settings */ GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STIME, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])); cTimeSeparator = szBuffer[0]; GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITIME | LOCALE_RETURN_NUMBER, (LPTSTR)&nTimeFormat, sizeof(nTimeFormat) / sizeof(TCHAR)); /* number settings */ GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])); cThousandSeparator = szBuffer[0]; GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])); cDecimalSeparator = szBuffer[0]; GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SGROUPING, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])); nNumberGroups = _ttoi(szBuffer); #if 0 /* days of week */ for (i = 0; i < 7; i++) { GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SABBREVDAYNAME1 + i, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])); _tcscpy (aszDayNames[(i+1)%7], szBuffer); /* little hack */ } #endif } /* Return date string including weekday. Used for $D in prompt and %DATE% */ LPTSTR GetDateString(VOID) { static TCHAR szDate[32]; SYSTEMTIME t; INT len; GetLocalTime(&t); len = GetDateFormat(LOCALE_USER_DEFAULT, 0, &t, _T("ddd"), szDate, sizeof szDate); szDate[len - 1] = _T(' '); FormatDate(&szDate[len], &t, TRUE); return szDate; } /* Return time in hh:mm:ss.xx format. Used for $T in prompt and %TIME% */ LPTSTR GetTimeString(VOID) { static TCHAR szTime[12]; SYSTEMTIME t; GetLocalTime(&t); _stprintf(szTime, _T("%02d%c%02d%c%02d%c%02d"), t.wHour, cTimeSeparator, t.wMinute, cTimeSeparator, t.wSecond, cDecimalSeparator, t.wMilliseconds / 10); return szTime; }