首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux time_to_tm与本地时间

Linux time_to_tm与本地时间
EN

Stack Overflow用户
提问于 2012-09-02 15:31:44
回答 2查看 5.2K关注 0票数 0

Linux内核提供了time_to_tm() (参见这里):

代码语言:javascript
复制
/**
 * time_to_tm - converts the calendar time to local broken-down time
 *
 * @totalsecs   the number of seconds elapsed since 00:00:00 on January 1, 1970,
 *              Coordinated Universal Time (UTC).
 * @offset      offset seconds adding to totalsecs.
 * @result      pointer to struct tm variable to receive broken-down time
 */
void time_to_tm(time_t totalsecs, int offset, struct tm *result)

根据描述,tm将在本地崩溃时间.因此,我理解tm将尊重我的本地时区和DST。如果这是正确的,我没有在代码中看到它。

也许应该使用参数offset来“提供”本地时区和DST?

更新

遵循这个问题,从而结合使用tztime_to_tm(),我们可以得到“真实”的本地时间吗?AFAIK,本地时间符号属于userland。例如,DST是在每个时区特别编译的配置文件中定义的。

我很困惑。sys_tz在内核中的含义是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-02 16:28:00

内核不知道也不关心时区或DST,它所做的每一件事都是以秒为单位的。时区和DST由用户模式的库处理,这些库检查您的环境变量,并可以扫描时区文件。

这个函数不能被最终用户调用--没有系统调用接口。它只是在内核内部使用。如果您查看交叉引用(汤姆逊),那么当前调用它的惟一位置是FAT文件系统驱动程序。它确实用于调整时区;它是为了支持tzoff挂载选项。

票数 3
EN

Stack Overflow用户

发布于 2012-09-08 06:43:54

Userspace可以调用settimeofday()将本地时间和时区传递到内核。时区存储在sys_tz中(参见kernel/time.c中的do_sys_settimeofday() )。内核主要使用sys_tz通过gettimeofday()等将本地时间返回到用户空间,还有一些地方(如fs/fat )也希望使用时区。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12237224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档