Linux时间和本地时间

Linux时间和本地时间,linux,linux-kernel,Linux,Linux Kernel,Linux内核提供了time\u to_tm()(请参阅): 根据描述,tm将是本地故障时间。 因此,我理解tm将尊重我的本地时区和DST。 如果这是正确的,我在代码中看不到它 也许应该使用参数偏移量来“提供”本地时区和DST 更新 下面,因此结合使用time\u to_tm()我们可以得到“真实”的当地时间? 另外,localtime符号属于userland。例如,DST是在每个时区专门编译的配置文件中定义的 我很困惑。sys\u tz在内核中的含义是什么?内核不知道或不关心时区或DST,它所

Linux内核提供了
time\u to_tm()
(请参阅):

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

也许应该使用参数
偏移量
来“提供”本地时区和DST

更新

下面,因此结合使用
time\u to_tm()
我们可以得到“真实”的当地时间? 另外,localtime符号属于userland。例如,DST是在每个时区专门编译的配置文件中定义的


我很困惑。
sys\u tz
在内核中的含义是什么?

内核不知道或不关心时区或DST,它所做的一切都是以自纪元以来的秒为单位的。时区和DST由用户模式下的库处理,它检查环境变量并可以扫描时区文件


此函数不能由最终用户调用——它没有系统调用接口。它只是在内核内部使用。如果你看看对照表(http://lxr.free-electrons.com/ident?v=2.6.33;i=time_to_tm),当前调用它的唯一位置是FAT文件系统驱动程序。它确实是用来调整时区的;这样做是为了支持
tzoff
mount选项。

内核不知道或不关心时区或DST,它所做的一切都是从纪元开始的秒数。时区和DST由用户模式下的库处理,它检查环境变量并可以扫描时区文件


此函数不能由最终用户调用——它没有系统调用接口。它只是在内核内部使用。如果你看看对照表(http://lxr.free-electrons.com/ident?v=2.6.33;i=time_to_tm),当前调用它的唯一位置是FAT文件系统驱动程序。它确实是用来调整时区的;这样做是为了支持
tzoff
mount选项。

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

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

这也是我所知道的,但是注释说不同:)应该使用什么偏移量参数?根据我们可以使用内核的本地时间。这也是我知道的,但是注释说不同:)应该使用什么偏移量参数?根据我们可以使用内核的本地时间。
/**
 * 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)