Merge pull request #4653 from mysterywolf/fixed-timezone

[libc][time]增加手动设置固定时区的功能
This commit is contained in:
Bernard Xiong
2021-05-01 10:58:24 +08:00
committed by GitHub
2 changed files with 13 additions and 9 deletions

View File

@@ -30,6 +30,10 @@
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
#ifndef RT_LIBC_FIXED_TIMEZONE
#define RT_LIBC_FIXED_TIMEZONE 8 /* UTC+8 */
#endif
/* seconds per day */
#define SPD 24*60*60
@@ -208,14 +212,11 @@ struct tm* gmtime(const time_t* t)
}
RTM_EXPORT(gmtime);
/*TODO: timezone */
struct tm* localtime_r(const time_t* t, struct tm* r)
{
time_t local_tz;
int utc_plus;
utc_plus = 8; /* GMT: UTC+8 */
local_tz = *t + utc_plus * 3600;
local_tz = *t + RT_LIBC_FIXED_TIMEZONE * 3600;
return gmtime_r(&local_tz, r);
}
RTM_EXPORT(localtime_r);
@@ -227,15 +228,12 @@ struct tm* localtime(const time_t* t)
}
RTM_EXPORT(localtime);
/* TODO: timezone */
time_t mktime(struct tm * const t)
{
time_t timestamp;
int utc_plus;
utc_plus = 8; /* GMT: UTC+8 */
timestamp = timegm(t);
timestamp = timestamp - 3600 * utc_plus;
timestamp = timestamp - 3600 * RT_LIBC_FIXED_TIMEZONE;
return timestamp;
}
RTM_EXPORT(mktime);