Linux时间和本地时间
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,它所
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)