c++ gmtime算法的最小实现?

14ifxucb  于 2023-07-01  发布在  其他
关注(0)|答案(3)|浏览(85)

有没有人知道一个简单的gmtimectime实现,而不考虑时区,没有外部依赖,和非copyleft许可证(BSD/MIT/任何专有安全)?最好是C语言,但基本上任何能给我最小形式算法的东西都能工作。
我只需要从“1970年1月1日00:00:00”开始的秒数分解成年日月时分秒。星期五快到回家的时间了,所以我觉得有点懒。

6gpjuf90

6gpjuf901#

将POSIX中定义“Seconds Since the Epoch”的算法颠倒过来:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_15

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
efzxgjgh

efzxgjgh2#

尝试newlib http://sourceware.org/newlib/,它是BSD许可证。
它是为嵌入式系统设计的,因此往往非常小和简单。
查看Docs -> Timefns,看看ctime或gmtime是否满足您的需求。

qoefvg9y

qoefvg9y3#

另一个简短的C实现,只有当time_t是int32_t时才有效(1901..2038年):https://github.com/pts/minilibc686/blob/master/fyi/c_gmtime.c
尺寸优化的i386组件:https://github.com/pts/minilibc686/blob/master/src/gmtime_r.nasm
编译代码大小比较(针对i386进行了大小优化):

相关问题