Glib конвертирует время эпохи в строку - PullRequest
1 голос
/ 26 апреля 2010

Я использую функции glibs для преобразования времени эпохи в строку следующим образом.
Но каждый раз это дает мне какое-то случайное время.

//Convert Time in string.
GDate *date = g_date_new_julian(timestampsecs);
gchar date_string[50];
g_date_strftime(date_string, 50, (const gchar*)"%a, %I:%M %p", (const GDate*)date);
printf("Date String [%s]\n", date_string );

Почему это может происходить? я что-то упустил?

Спасибо
PP.

UPDATE:

Как я уже говорил, setlocale(LC_ALL, ""); выдает следующее:
Это то же самое, что я получал до использования setlocale.

(MyTestApp:7747): GLib-WARNING **:
OOPS julian: 1272279703  computed dmy: 66 4293563716 187
Date String Tik_INDEX[1] [1272279703] --> [Tue, 12:00 AM]

(MyTestApp:7747): GLib-WARNING **:
OOPS julian: 1272279717  computed dmy: 80 4293563716 187
Date String Tik_INDEX[2] [1272279717] --> [Tue, 12:00 AM]

(MyTestApp:7747): GLib-WARNING **:
OOPS julian: 1272279720  computed dmy: 53 4293563717 187
Date String Tik_INDEX[3] [1272279720] --> [Fri, 12:00 AM]

(MyTestApp:7747): GLib-WARNING **:
OOPS julian: 1272279721  computed dmy: 54 4293563717 187
Date String Tik_INDEX[4] [1272279721] --> [Sat, 12:00 AM]

(MyTestApp:7747): GLib-WARNING **:
OOPS julian: 1272279721  computed dmy: 54 4293563717 187
Date String Tik_INDEX[5] [1272279721] --> [Sat, 12:00 AM]

(MyTestApp:7747): GLib-WARNING **:
OOPS julian: 1272279722  computed dmy: 55 4293563717 187
Date String Tik_INDEX[6] [1272279722] --> [Sun, 12:00 AM]

(MyTestApp:7747): GLib-WARNING **:
OOPS julian: 1272279723  computed dmy: 56 4293563717 187
Date String Tik_INDEX[7] [1272279723] --> [Mon, 12:00 AM]

(MyTestApp:7747): GLib-WARNING **:
OOPS julian: 1272279724  computed dmy: 57 4293563717 187
Date String Tik_INDEX[8] [1272279724] --> [Tue, 12:00 AM]

1 Ответ

1 голос
/ 26 апреля 2010

Вы, вероятно, хотите сначала вызвать setlocale () , "LC_ALL" должен сделать это . POSIX тоже должно работать, не уверен насчет C.

g_date_strftime() зависит от настройки локали. Также хорошо хранить результат g_date_strftime() или что-то еще, что заполняет статический буфер. Вы захотите узнать, сколько байтов было фактически напечатано в буфере.

...