码迷,mamicode.com
首页 > 其他好文 > 详细

SylixOS移植时mk_time函数问题

时间:2018-06-20 22:44:01      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:family   数据   移植   linux   win   中间   python   sylixos   orm   

1.适用范围

        本文档适用于进行SylixOS中间件移植的技术人员。

2.问题复现

2.1 问题现象

    在进行Python3移植测试时,test_time.py测试用例出错,错误如图 2.1 所示:

技术分享图片

2.1 测试用例出错信息

2.2 问题源码

        测试用例的python源码如图 2.2 所示:

技术分享图片

2.2 问题源码

3.原因分析

        mktime()是定义在time.h中的函数,函数原型为time_t mktime(struct tm * timeptr)。作用是将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的时间所经过的秒数。

        在Linux下,timeptr所指的tm结构数据可以为任意数值。而在SylixOS下,mktime()函数的实现中有一个判断,如程序清单 3.1所示:

程序清单 3.1

if ((timeptr->tm_year + TM_YEAR_BASE) < EPOCH_YEAR )

    return ((time_t) PX_ERROR);


        其中,TM_YEAR_BASE宏为1900,EPOCH_YEAR宏为1970。现象为如果传入的tm_year值小于70,即实际传入时间在1970年之前,会返回-1,导致test_time.py的测试函数无法通过。

        这一行为与Windows是一致的,因为以函数的功能来看,传入在1970年之前的时间也不合理,SylixOS的mk_time()函数只处理1970年以后的时间,Windows上是只处理1970-3000的时间。


SylixOS移植时mk_time函数问题

标签:family   数据   移植   linux   win   中间   python   sylixos   orm   

原文地址:http://blog.51cto.com/13549832/2131078

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!