|
|
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
Привет. Есть строка с датой следующего вида: Tue Jun 13 12:30:55 MSD 2006, т.е. формат '%a %b %e %T %Z %Y' Задача — сконвертировать в time_t и вернуть как UTC. С mktime(3C) разобрался, непонятно только, что делать с врееменной зоной (которая в данном примере — MSD) — как распарсить это значение?... C, POSIX, но можно и со спецификой Solaris (9). Куаукутсу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 15:24:40 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
так в tm.tm_zone как раз его и надо запихнуть по идее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 15:58:14 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
А нету у меня tm_zone /usr/include/iso/time_iso.h struct tm { /* see ctime(3) */ int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; Куаукутсу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:16:55 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
ага. у меня RHE оно действительно не везде есть, вот что они пишут. man The glibc version of struct tm has additional fields long tm_gmtoff; /* Seconds east of UTC */ const char *tm_tm_zone; /* Timezone abbreviation */ defined when _BSD_SOURCE was set before including <time.h>. This is a BSD extension, present in 4.3BSD-Reno. правда в хедере tm_zone Код: plaintext 1. 2. 3. 4. 5. 6. 7. ествественно в Соляре нету :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:23:22 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
Да фиг с ним, я через putenv могу поставить зону такую, чтобы для неё время на входе было бы как локальное. Но MSD не есть валидное значения для $TZ, там у меня сейчас Europe/Moscow. Вот у коллеги, например, %Z и $TZ - YEKST и Asia/Yekaterinburg соответсвенно. Как бы вытянуть это соответсвие?... Куаукутсу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:30:55 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
Scott TigerПривет. Есть строка с датой следующего вида: Tue Jun 13 12:30:55 MSD 2006, т.е. формат '%a %b %e %T %Z %Y' Задача — сконвертировать в time_t и вернуть как UTC. С mktime(3C) разобрался, непонятно только, что делать с врееменной зоной (которая в данном примере — MSD) — как распарсить это значение?... C, POSIX, но можно и со спецификой Solaris (9). Куаукутсу А если заменить %Z на %z? Будешь обрабатывать исключительно цифровое значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 17:50:59 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
Вот ещё одна штука непонятная, tm.is_dst: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Теперь пробуем Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Так понимаю, что то ли zoneinfo битый для Asia/Yekaterinburg, то ли я совсем не копенгаген Куаукутсу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 18:25:13 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. На всякий случай. Куаукутсу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 18:38:43 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
И вот ещё 100% решение твоей задачи на Java. Как это на С реализовать - я не знаю. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. 2. 3. Для Asia/Yekaterinburg Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2006, 17:12:20 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
Хотя тебе вроде наоборот надо. Вобщем чувствую, решение где-то рядом.... Я понимаю так, что одному краткому значению может соответствовать несколько разных длинных названий. Поэтому по краткому названию нельзя однозначно получить длинное соответствие. А вот наоборот можно(пример постом выше). Но это тоже ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2006, 17:18:39 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
Но ты не сможешь по краткому названию однозначно получить timezone. Например "MDT" соответствует зонам: авторAmerica/Denver America/Edmonton America/Mazatlan "WAT": авторAfrica/Bangui Africa/Douala Africa/Kinshasa Africa/Lagos итд. "EEST": авторEurope/Athens Europe/Bucharest Europe/Chisinau Europe/Helsinki Europe/Istanbul Europe/Kaliningrad Europe/Kiev Europe/Minsk Europe/Riga Europe/Simferopol Europe/Sofia ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2006, 10:28:58 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
Поскольку Скоти так и не появился - для творчества есть ещё место :) Добавил в файл смещение(Offset) для лета. Код такой соответственно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Вывод перенаправил в файл. Оформил в виде xls-файла. Дальше это можно засунуть в таблицу в БД и написать соответствующую функцию конвертации. Файл TimeZone.xls прилагаю. "daylight" - это летнее время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2006, 16:38:30 |
|
||
|
Конвертация формата даты (С)
|
|||
|---|---|---|---|
|
#18+
Вот такие приколы наблюдаются: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2006, 16:48:22 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=33787869&tid=1489381]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 446ms |

| 0 / 0 |
