Минимальная реализация алгоритма gmtime?

Кто-нибудь знает о простом gmtime или же ctime реализация без учета часового пояса, без внешних зависимостей и лицензии без авторского лева (BSD/MIT/ что-нибудь проприетарное-безопасное)? Предпочтительно в C, но в основном все, что дает мне алгоритм в его минимальной форме, будет работать.

Мне просто нужны секунды с тех пор, как "1 января 1970 00:00:00" было разбито на год, день, месяц, часы, минуты, секунды. И уже почти пора домой в пятницу, поэтому я чувствую себя немного ленивым.

3 ответа

Решение

Попробуйте newlib http://sourceware.org/newlib/ это лицензия BSD.

Он предназначен для встраиваемых систем, поэтому имеет тенденцию быть довольно маленьким и простым.

Посмотрите Docs -> Timefns, чтобы увидеть, соответствуют ли ctime или gmtime вашим потребностям.

Обратный алгоритм, определяющий "секунды с начала эпохи" из POSIX:

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html

tm_sec + tm_min*60 + tm_hour*3600 + tm_yday*86400 +
    (tm_year-70)*31536000 + ((tm_year-69)/4)*86400 -
    ((tm_year-1)/100)*86400 + ((tm_year+299)/400)*86400

Еще одна короткая реализация C с лицензией MIT, которая работает с time_t любого размера (32 бита, 64 бита и т. д.):

Сборка i386, оптимизированная по размеру, с 32-битным time_t:

Сравнение размера скомпилированного кода (оптимизировано для i386, с 32-битным time_t):

Другие вопросы по тегам