Конвертация формата даты (С)
От: Scott Tiger Россия  
Дата: 13.06.06 10:52
Оценка:
Привет.

Есть строка с датой следующего вида:

Tue Jun 13 12:30:55 MSD 2006,

т.е. формат %a %b %e %T %Z %Y

Задача — сконвертировать в time_t и вернуть как UTC. С mktime(3C) разобрался, непонятно только, что делать с врееменной зоной (которая в данном примере — MSD) — как распарсить это значение?...

C, POSIX, но можно и со спецификой Solaris (9).
Куаукутсу
Re: Конвертация формата даты (С)
От: execve  
Дата: 14.06.06 10:59
Оценка:
Здравствуйте, Scott Tiger, Вы писали:

ST>Привет.


ST>Есть строка с датой следующего вида:


ST>Tue Jun 13 12:30:55 MSD 2006,


ST>т.е. формат %a %b %e %T %Z %Y


ST>Задача — сконвертировать в time_t и вернуть как UTC. С mktime(3C) разобрался, непонятно только, что делать с врееменной зоной (которая в данном примере — MSD) — как распарсить это значение?...


ST>C, POSIX, но можно и со спецификой Solaris (9).


Посмотри на getdate.
Re: Конвертация формата даты (С)
От: nau  
Дата: 14.06.06 11:23
Оценка:
Здравствуйте, Scott Tiger, Вы писали:

ST>Привет.


ST>Есть строка с датой следующего вида:


ST>Tue Jun 13 12:30:55 MSD 2006,


ST>т.е. формат %a %b %e %T %Z %Y


ST>Задача — сконвертировать в time_t и вернуть как UTC. С mktime(3C) разобрался, непонятно только, что делать с врееменной зоной (которая в данном примере — MSD) — как распарсить это значение?...


ST>C, POSIX, но можно и со спецификой Solaris

man strptime. gettime немного не то.
В теории практика не отличается от теории, но на практике — отличается
Re[2]: Конвертация формата даты (С)
От: Scott Tiger Россия  
Дата: 15.06.06 07:57
Оценка:
Здравствуйте, nau, Вы писали:

nau>Здравствуйте, Scott Tiger, Вы писали:


ST>>Привет.


ST>>Есть строка с датой следующего вида:


ST>>Tue Jun 13 12:30:55 MSD 2006,


ST>>т.е. формат %a %b %e %T %Z %Y


ST>>Задача — сконвертировать в time_t и вернуть как UTC. С mktime(3C) разобрался, непонятно только, что делать с врееменной зоной (которая в данном примере — MSD) — как распарсить это значение?...


ST>>C, POSIX, но можно и со спецификой Solaris

nau>man strptime. gettime немного не то.

Спасибо. Вот только со strptime выяснилась неприятная особенность её неработоспособности (год и час уходят в 0) в случае, если $TZ — это не то, что %Z в строке. Т.е., мой пример работает нормально, только если $TZ=Europe/Moscow. Аналогично, если в строке поставить GMT, то будет работать только с $TZ=GMT, а с московской зоной всё те же нули. Нашёл сообщение в comp.unix.solaris за 1998 год с такой же проблемой в Solaris 2.6, задумался.
Куаукутсу
Re[2]: Конвертация формата даты (С)
От: Scott Tiger Россия  
Дата: 15.06.06 10:05
Оценка:
Здравствуйте, nau, Вы писали:

nau>Здравствуйте, Scott Tiger, Вы писали:


ST>>Привет.


ST>>Есть строка с датой следующего вида:


ST>>Tue Jun 13 12:30:55 MSD 2006,


ST>>т.е. формат %a %b %e %T %Z %Y


ST>>Задача — сконвертировать в time_t и вернуть как UTC. С mktime(3C) разобрался, непонятно только, что делать с врееменной зоной (которая в данном примере — MSD) — как распарсить это значение?...


ST>>C, POSIX, но можно и со спецификой Solaris

nau>man strptime. gettime немного не то.

Гы. Оказывается, строчка, выводимая по формату %Z — неуникальная, есть зоны с разным смещением относительно UTC, но с одинаковыми аббревиатурами...
Куаукутсу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.