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>)
19 TCHAR cThousandSeparator
;
20 TCHAR cDecimalSeparator
;
23 TCHAR aszDayNames
[7][8];
27 VOID
InitLocale (VOID
)
34 GetLocaleInfo (LOCALE_USER_DEFAULT
, LOCALE_SDATE
, szBuffer
, 256);
35 CharToOem (szBuffer
, szBuffer
);
36 cDateSeparator
= szBuffer
[0];
37 GetLocaleInfo (LOCALE_USER_DEFAULT
, LOCALE_IDATE
, szBuffer
, 256);
38 nDateFormat
= _ttoi (szBuffer
);
41 GetLocaleInfo (LOCALE_USER_DEFAULT
, LOCALE_STIME
, szBuffer
, 256);
42 CharToOem (szBuffer
, szBuffer
);
43 cTimeSeparator
= szBuffer
[0];
44 GetLocaleInfo (LOCALE_USER_DEFAULT
, LOCALE_ITIME
, szBuffer
, 256);
45 nTimeFormat
= _ttoi (szBuffer
);
48 GetLocaleInfo (LOCALE_USER_DEFAULT
, LOCALE_STHOUSAND
, szBuffer
, 256);
49 CharToOem (szBuffer
, szBuffer
);
50 cThousandSeparator
= szBuffer
[0];
51 GetLocaleInfo (LOCALE_USER_DEFAULT
, LOCALE_SDECIMAL
, szBuffer
, 256);
52 CharToOem (szBuffer
, szBuffer
);
53 cDecimalSeparator
= szBuffer
[0];
54 GetLocaleInfo (LOCALE_USER_DEFAULT
, LOCALE_SGROUPING
, szBuffer
, 256);
55 nNumberGroups
= _ttoi (szBuffer
);
58 for (i
= 0; i
< 7; i
++)
60 GetLocaleInfo (LOCALE_USER_DEFAULT
, LOCALE_SABBREVDAYNAME1
+ i
, szBuffer
, 256);
61 CharToOem (szBuffer
, szBuffer
);
62 _tcscpy (aszDayNames
[(i
+1)%7], szBuffer
); /* little hack */
67 LPTSTR names
[7] = {_T("So"), _T("Mo"), _T("Di"), _T("Mi"), _T("Do"), _T("Fr"), _T("Sa")};
72 nDateFormat
= 1; /* ddmmyy */
76 nTimeFormat
= 1; /* 24 hour */
79 cThousandSeparator
= '.';
80 cDecimalSeparator
= ',';
84 for (i
= 0; i
< 7; i
++)
85 _tcscpy (aszDayNames
[i
], names
[i
]);
89 LPTSTR names
[7] = {_T("Sun"), _T("Mon"), _T("Tue"), _T("Wed"), _T("Thu"), _T("Fri"), _T("Sat")};
94 nDateFormat
= 0; /* mmddyy */
98 nTimeFormat
= 0; /* 12 hour */
100 /* number settings */
101 cThousandSeparator
= ',';
102 cDecimalSeparator
= '.';
106 for (i
= 0; i
< 7; i
++)
107 _tcscpy (aszDayNames
[i
], names
[i
]);
112 VOID
PrintDate (VOID
)
123 ConOutPrintf (_T("%s %02d%c%02d%c%04d"),
124 aszDayNames
[st
.wDayOfWeek
], st
.wMonth
, cDateSeparator
, st
.wDay
, cDateSeparator
, st
.wYear
);
128 ConOutPrintf (_T("%s %02d%c%02d%c%04d"),
129 aszDayNames
[st
.wDayOfWeek
], st
.wDay
, cDateSeparator
, st
.wMonth
, cDateSeparator
, st
.wYear
);
133 ConOutPrintf (_T("%s %04d%c%02d%c%02d"),
134 aszDayNames
[st
.wDayOfWeek
], st
.wYear
, cDateSeparator
, st
.wMonth
, cDateSeparator
, st
.wDay
);
140 GetDateFormat (LOCALE_USER_DEFAULT
, DATE_SHORTDATE
, NULL
, NULL
,
141 szDate
, sizeof (szDate
));
142 ConOutPrintf (_T("%s"), szDate
);
147 VOID
PrintTime (VOID
)
156 case 0: /* 12 hour format */
158 ConOutPrintf (_T("Current time is %2d%c%02d%c%02d%c%02d%c\n"),
159 (st
.wHour
== 0 ? 12 : (st
.wHour
<= 12 ? st
.wHour
: st
.wHour
- 12)),
160 cTimeSeparator
, st
.wMinute
, cTimeSeparator
, st
.wSecond
, cDecimalSeparator
,
161 st
.wMilliseconds
/ 10, (st
.wHour
<= 11 ? 'a' : 'p'));
164 case 1: /* 24 hour format */
165 ConOutPrintf (_T("Current time is %2d%c%02d%c%02d%c%02d\n"),
166 st
.wHour
, cTimeSeparator
, st
.wMinute
, cTimeSeparator
,
167 st
.wSecond
, cDecimalSeparator
, st
.wMilliseconds
/ 10);
173 GetTimeFormat (LOCALE_USER_DEFAULT
, 0, NULL
, NULL
,
174 szTime
, sizeof (szTime
));
175 ConOutPrintf (_T("Current time is: %s\n"), szTime
);