Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
ab5f1d49
R
rt-thread
项目概览
BaiXuePrincess
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ab5f1d49
编写于
10月 24, 2018
作者:
Z
zylx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[kernel][kservice] add rt_gmtime_r api
上级
fbaa8693
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
56 addition
and
0 deletion
+56
-0
include/rtthread.h
include/rtthread.h
+1
-0
src/kservice.c
src/kservice.c
+55
-0
未找到文件。
include/rtthread.h
浏览文件 @
ab5f1d49
...
...
@@ -473,6 +473,7 @@ rt_int32_t rt_vsprintf(char *dest, const char *format, va_list arg_ptr);
rt_int32_t
rt_vsnprintf
(
char
*
buf
,
rt_size_t
size
,
const
char
*
fmt
,
va_list
args
);
rt_int32_t
rt_sprintf
(
char
*
buf
,
const
char
*
format
,
...);
rt_int32_t
rt_snprintf
(
char
*
buf
,
rt_size_t
size
,
const
char
*
format
,
...);
struct
tm
*
rt_gmtime_r
(
const
time_t
*
timep
,
struct
tm
*
result
);
#if defined(RT_USING_DEVICE) && defined(RT_USING_CONSOLE)
rt_device_t
rt_console_set_device
(
const
char
*
name
);
...
...
src/kservice.c
浏览文件 @
ab5f1d49
...
...
@@ -1177,6 +1177,61 @@ void rt_kprintf(const char *fmt, ...)
RTM_EXPORT
(
rt_kprintf
);
#endif
struct
tm
*
rt_gmtime_r
(
const
time_t
*
timep
,
struct
tm
*
result
)
{
#define IS_LEAP_YEAR(year) (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
const
rt_uint32_t
mon_table
[
12
]
=
{
31
,
28
,
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
};
rt_uint32_t
year
=
1970
,
month
=
0
;
rt_uint32_t
daycount
=
0
,
second
=
0
,
number
=
0
;
second
=
*
timep
%
(
24
*
60
*
60
);
result
->
tm_hour
=
second
/
3600
;
result
->
tm_min
=
(
second
%
3600
)
/
60
;
result
->
tm_sec
=
(
second
%
3600
)
%
60
;
daycount
=
*
timep
/
(
24
*
60
*
60
);
result
->
tm_wday
=
(
daycount
+
4
)
%
7
;
if
(
daycount
!=
0
)
{
while
(
daycount
>=
365
)
{
number
=
IS_LEAP_YEAR
(
year
)
?
366
:
365
;
if
(
daycount
>=
number
)
{
daycount
-=
number
;
year
++
;
}
else
break
;
}
result
->
tm_year
=
year
-
1900
;
while
(
daycount
>=
28
)
{
if
(
month
==
1
&&
IS_LEAP_YEAR
(
year
))
{
if
(
daycount
>=
29
)
daycount
-=
29
;
else
break
;
}
else
{
if
(
daycount
>=
mon_table
[
month
])
daycount
-=
mon_table
[
month
];
else
break
;
}
month
++
;
}
result
->
tm_mon
=
month
+
1
;
result
->
tm_mday
=
daycount
+
1
;
}
return
result
;
}
RTM_EXPORT
(
rt_gmtime_r
);
#ifdef RT_USING_HEAP
/**
* This function allocates a memory block, which address is aligned to the
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录