| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Преобразование времени |
| Автор: alex2011 16.1.2011, 15:04 |
| Hi All. Вопрос такой: Существуют ли стандартные средства (да ещё такие, чтоб работали на разных платформах) для преобразования вот такой строки: "2011-01-14T13:55:28.767+06:00" в какое-нибудь из представлений времени (time_t, struct tm) ? Распарсить его руками конечно же не сложно (даже с учетом того, что миллисекунды могут быть либо не быть, так же, как и смещение относительно Гринвича). Но вот в чём вопрос: как потом преобразовать это время в местное? Т.е. тут как-то получается, что вот от этих +06:00 надо отнять 3 или 4 (если для Москвы), в зависимости от того, летнее время на дату 2011-01-14 или нет. А вот как бы определить дату перевода времени на летнее или зимнее в таком-то году? Или я вообще иду не тем путём (я не имею в виду здесь выбор языка или платформы) ? |
| Автор: Vicul 16.1.2011, 16:30 | ||||||||
Если прога работает с mysql, там у мускула есть функция, которя берет такую строку и выдает юникс временной штамп, короче через sql запрос. Конечно дебильно, но работает.
Я когда то определял время летнее или зимнее из текущего. Я понимаю может это не то, но вдруг подойдет
Там я определяю Лондонское время, у меня сервере был на Амазоне, поэтому нужна была точная временная привязка. Далее из него получал tm* ptm, а из него день недели weekDay и сам день и месяца (day) в формате день.месяц и время в секундах. Потом определял московское время по лету или зиме. Вот функции
|
| Автор: VirtualVoid 16.1.2011, 21:27 |
| В никсах есть стандартная функция strptime, в винде нету. В бусте вроде тоже есть ее реализация. Еще можно попробовать скомпилировать ее самостоятельно, выкинув лишнее, например из http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/time/strptime.c?rev=HEAD реализации. |