2 * LOCALE.C - locale handling.
7 * 09-Jan-1999 (Eric Kohl <ekohl@abo.rhein-zeitung.de>)
10 * 20-Jan-1999 (Eric Kohl <ekohl@abo.rhein-zeitung.de>)
26 TCHAR cThousandSeparator;
27 TCHAR cDecimalSeparator;
30 TCHAR aszDayNames[7][8];
34 VOID InitLocale (VOID)
41 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SDATE, szBuffer, 256);
42 CharToOem (szBuffer, szBuffer);
43 cDateSeparator = szBuffer[0];
44 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_IDATE, szBuffer, 256);
45 nDateFormat = _ttoi (szBuffer);
48 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STIME, szBuffer, 256);
49 CharToOem (szBuffer, szBuffer);
50 cTimeSeparator = szBuffer[0];
51 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITIME, szBuffer, 256);
52 nTimeFormat = _ttoi (szBuffer);
55 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, szBuffer, 256);
56 CharToOem (szBuffer, szBuffer);
57 cThousandSeparator = szBuffer[0];
58 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, szBuffer, 256);
59 CharToOem (szBuffer, szBuffer);
60 cDecimalSeparator = szBuffer[0];
61 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SGROUPING, szBuffer, 256);
62 nNumberGroups = _ttoi (szBuffer);
65 for (i = 0; i < 7; i++)
67 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SABBREVDAYNAME1 + i, szBuffer, 256);
68 CharToOem (szBuffer, szBuffer);
69 _tcscpy (aszDayNames[(i+1)%7], szBuffer); /* little hack */
74 LPTSTR names [7] = {_T("So"), _T("Mo"), _T("Di"), _T("Mi"), _T("Do"), _T("Fr"), _T("Sa")};
79 nDateFormat = 1; /* ddmmyy */
83 nTimeFormat = 1; /* 24 hour */
86 cThousandSeparator = '.';
87 cDecimalSeparator = ',';
91 for (i = 0; i < 7; i++)
92 _tcscpy (aszDayNames[i], names[i]);
96 LPTSTR names [7] = {_T("Sun"), _T("Mon"), _T("Tue"), _T("Wed"), _T("Thu"), _T("Fri"), _T("Sat")};
100 cDateSeparator = '-';
101 nDateFormat = 0; /* mmddyy */
104 cTimeSeparator = ':';
105 nTimeFormat = 0; /* 12 hour */
107 /* number settings */
108 cThousandSeparator = ',';
109 cDecimalSeparator = '.';
113 for (i = 0; i < 7; i++)
114 _tcscpy (aszDayNames[i], names[i]);
119 VOID PrintDate (VOID)
130 ConOutPrintf (_T("%s %02d%c%02d%c%04d"),
131 aszDayNames[st.wDayOfWeek], st.wMonth, cDateSeparator, st.wDay, cDateSeparator, st.wYear);
135 ConOutPrintf (_T("%s %02d%c%02d%c%04d"),
136 aszDayNames[st.wDayOfWeek], st.wDay, cDateSeparator, st.wMonth, cDateSeparator, st.wYear);
140 ConOutPrintf (_T("%s %04d%c%02d%c%02d"),
141 aszDayNames[st.wDayOfWeek], st.wYear, cDateSeparator, st.wMonth, cDateSeparator, st.wDay);
147 GetDateFormat (LOCALE_USER_DEFAULT, DATE_SHORTDATE, NULL, NULL,
148 szDate, sizeof (szDate));
149 ConOutPrintf (_T("%s"), szDate);
154 VOID PrintTime (VOID)
163 case 0: /* 12 hour format */
165 ConOutPrintf (_T("Current time is %2d%c%02d%c%02d%c%02d%c\n"),
166 (st.wHour == 0 ? 12 : (st.wHour <= 12 ? st.wHour : st.wHour - 12)),
167 cTimeSeparator, st.wMinute, cTimeSeparator, st.wSecond, cDecimalSeparator,
168 st.wMilliseconds / 10, (st.wHour <= 11 ? 'a' : 'p'));
171 case 1: /* 24 hour format */
172 ConOutPrintf (_T("Current time is %2d%c%02d%c%02d%c%02d\n"),
173 st.wHour, cTimeSeparator, st.wMinute, cTimeSeparator,
174 st.wSecond, cDecimalSeparator, st.wMilliseconds / 10);
180 GetTimeFormat (LOCALE_USER_DEFAULT, 0, NULL, NULL,
181 szTime, sizeof (szTime));
182 ConOutPrintf (_T("Current time is: %s\n"), szTime);