有没有人知道一个简单的gmtime或ctime实现,而不考虑时区,没有外部依赖,和非copyleft许可证(BSD/MIT/任何专有安全)?最好是C语言,但基本上任何能给我最小形式算法的东西都能工作。我只需要从“1970年1月1日00:00:00”开始的秒数分解成年日月时分秒。星期五快到回家的时间了,所以我觉得有点懒。
gmtime
ctime
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
efzxgjgh2#
尝试newlib http://sourceware.org/newlib/,它是BSD许可证。它是为嵌入式系统设计的,因此往往非常小和简单。查看Docs -> Timefns,看看ctime或gmtime是否满足您的需求。
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进行了大小优化):
3条答案
按热度按时间6gpjuf901#
将POSIX中定义“Seconds Since the Epoch”的算法颠倒过来:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_15
efzxgjgh2#
尝试newlib http://sourceware.org/newlib/,它是BSD许可证。
它是为嵌入式系统设计的,因此往往非常小和简单。
查看Docs -> Timefns,看看ctime或gmtime是否满足您的需求。
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进行了大小优化):