TZSET - Linux手册页

时间:2019-08-20 18:01:34  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

tzset,tzname,时区,日光-初始化时间转换信息

语法

#include <time.h>

void tzset (void);

extern char *tzname[2];
extern long timezone;
extern int daylight;

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

tzset():_ POSIX_C_SOURCE
tzname:_POSIX_C_SOURCE
时区,夏令时:_XOPEN_SOURCE
|| / * Glibc自2.19开始:* / -_DEFAULT_SOURCE
|| / * Glibc版本

说明

tzset()函数从TZ环境变量初始化tzname变量。取决于时区的其他时间转换函数会自动调用此函数。在类似于System-V的环境中,还会将变量timezone(UTC以西的秒数)和夏时制设置为变量(如果该时区没有任何夏令时规则,则设置为0,如果有过去的时间,则设置为非零,夏令时适用的现在或将来)。

如果TZ变量没有出现在环境中,则使用系统时区。通过将tzfile(5)格式的文件复制或链接到/ etc / localtime来配置系统时区。这些文件的时区数据库可能位于系统时区目录中(请参阅下面的"文件"部分)。

如果TZ变量确实出现在环境中,但是其值为空,或者无法使用以下指定的任何格式解释其值,则使用协调世界时(UTC)。

TZ的值可以是两种格式之一。第一种格式是一串字符串,直接表示要使用的时区:

std offset[dst[offset][,start[/time],end[/time]]]

规范中没有空格。 std字符串指定时区的缩写,并且必须为三个或更多字母字符。当包含在小于号()之间时,字符集将扩展为包括加号(+),减号(-)和数字。偏移量字符串紧跟在std之后,并指定要添加到本地时间以获得协调世界时(UTC)的时间值。如果当地时区在本初子午线以西,则偏移为正;如果当地时区在东,则偏移为负。小时必须在0到24之间,分钟和秒在00到59之间:

[+|-]hh[:mm[:ss]]

dst字符串和偏移量指定相应的夏令时区的名称和偏移量。如果省略了偏移量,则默认为标准时间之前一小时。

开始字段指定夏令时生效,结束字段指定何时将更改恢复为标准时间。这些字段可能具有以下格式:

Jn
这指定n在1到365之间的儒略日。不计算Le日。采用这种格式时,无法表示2月29日; 2月28日是第59天,3月1日始终是第60天。
n
这指定从零开始的Julian日,其中n在0到365之间。2月29日以leap年计。
Mm.w.d
这指定了d(0

时间字段指定在当前生效的当地时间中何时更改为其他时间。如果省略,则默认值为02:00:00。

这是一个新西兰的示例,其中标准时间(NZST)比UTC早12小时,而夏令时(NZDT)比UTC早13小时,从10月的第一个星期日持续到3月的第三个星期日,转换发生在默认时间02:00:00:

TZ="NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0"

第二种格式指定应从文件中读取时区信息:

:[filespec]

如果省略文件规范filespec或无法解释其值,则使用协调世界时(UTC)。如果指定了filespec,它将指定另一个tzfile(5)格式的文件来读取时区信息。如果filespec不是以aq / aq开头,则文件规范是相对于系统时区目录的。如果省略了冒号,则将尝试上述每种TZ格式。

再举一个新西兰的例子:

TZ=":Pacific/Auckland"

环境

TZ
如果设置了此变量,则其值优先于系统配置的时区。
TZDIR
如果设置了此变量,则其值优先于系统配置的时区数据库目录路径。

文件

/etc/localtime
系统时区文件。
/usr/share/zoneinfo/
系统时区数据库目录。
/usr/share/zoneinfo/posixrules
如果TZ字符串包含dst时区,但后面没有任何内容,则此文件用于开始/结束规则。它采用tzfile(5)格式。默认情况下,zoneinfo Makefile会将其硬链接到America / New_York tzfile。

以上是当前的标准文件位置,但是在编译glibc时可以配置它们。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
tzset()Thread safetyMT-Safe env locale

遵循规范

POSIX.1-2001,POSIX.1-2008,SVr4、4.3BSD。

备注

4.3BSD的函数char * timezone(zone,dst)返回了对应于其第一个参数的时区名称(UTC以西的分钟数)。如果第二个参数为0,则使用标准名称,否则为夏令时版本。

另外参见

date(1),gettimeofday(2),time(2),ctime(3),getenv(3),tzfile(5)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/