#include <stdio.h>
#include <locale.h>
#include <time.h>

void test(const char *locale_name)
{
    time_t tt;
    struct tm tm;
    size_t buflen;
    const char *p;
    char buf[100];
    const wchar_t *wp;
    wchar_t wbuf[100];

    setlocale(LC_ALL, locale_name);

    /* tzname */

    tzset();

    for (p = tzname[0]; *p; ++p)
        printf("%02X ", (unsigned char)*p);
    printf("\n");

    /* strftime */

    buflen = strftime(buf, sizeof(buf), "%Z", &tm);

    if (buflen > 0) {
        for (p = buf; *p; ++p)
            printf("%02X ", (unsigned char)*p);
        printf("\n");
    }

    /* wcsftime */

    tt = time(NULL);

    tm = *localtime(&tt);

    buflen = wcsftime(wbuf, sizeof(wbuf), L"%Z", &tm);

    if (buflen > 0) {
        for (wp = wbuf; *wp; ++wp)
            printf("%04X ", (unsigned short)*wp);
        printf("\n");
    }


    printf("\n");
}

int main()
{
    test("C");
    /*
    93 8C 8B 9E 20 28 95 57 8F 80 8E 9E 29
    93 8C 8B 9E 20 28 95 57 8F 80 8E 9E 29
    0093 008C 008B 009E 0020 0028 0095 0057 008F 0080 008E 009E 0029
    */

    test(""); /* MBCS (CP932 in my environment) */
    /*
    93 8C 8B 9E 20 28 95 57 8F 80 8E 9E 29
    93 8C 8B 9E 20 28 95 57 8F 80 8E 9E 29
    6771 4EAC 0020 0028 6A19 6E96 6642 0029
    */
}

