1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include <stdio.h>
- #include <time.h>
- #include <features.h>
- #include <wchar.h>
- #include <locale.h>
- #define NUM_OF_DATES 7
- #define NUM_OF_LOCALES 3
- #define BUF_SIZE 256
- int
- main (void)
- {
- wchar_t buf[BUF_SIZE];
- struct tm *tp;
- time_t time_list[NUM_OF_DATES] = {
- 500, 68200000, 694223999,
- 694224000, 704900000, 705000000,
- 705900000
- };
- char *locale_list[NUM_OF_LOCALES] = {
- "C",
- "fr_FR.ISO-8859-1",
- "ja_JP.UTF-8"
- };
- int result = 0, ddd, lll;
- size_t n;
- for (lll = 0; lll < NUM_OF_LOCALES; lll++) {
- printf ("\nUsing locale: %s\n", locale_list[lll]);
- char* set = setlocale(LC_ALL, locale_list[lll]);
- if (set == NULL) {
- printf ("FAILED!\n\n");
- continue;
- } else
- printf ("\n");
- for (ddd = 0; ddd < NUM_OF_DATES; ddd++) {
- tp = localtime(&time_list[ddd]);
- printf ("%ld corresponds to ", time_list[ddd]);
- n = wcsftime (buf, sizeof (buf) / sizeof (buf[0]),
- L"%H:%M:%S %Y-%m-%d%n", tp);
- if (n != 21) {
- result = 1;
- printf ("FAILED!\n");
- }
- printf ("%ls", buf);
- wcsftime (buf, sizeof (buf) / sizeof (buf[0]),
- L"%tor, as %%D %%T: %D %T%n", tp);
- printf ("%ls", buf);
- wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%A (%a)%n", tp);
- printf ("The weekday was %ls", buf);
- wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%B (%b) %Y%n", tp);
- /* glibc bug? forgets aigu from french february février
- * See s/printf (/wprintf (L/g */
- //wprintf (L"Month was %ls", buf);
- printf ("Month was %ls", buf);
- }
- }
- return result;
- }
|