TZSET - Linux手册页
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)。
Interface | Attribute | Value |
tzset() | Thread safety | MT-Safe env locale |
遵循规范
POSIX.1-2001,POSIX.1-2008,SVr4、4.3BSD。
备注
4.3BSD的函数char * timezone(zone,dst)返回了对应于其第一个参数的时区名称(UTC以西的分钟数)。如果第二个参数为0,则使用标准名称,否则为夏令时版本。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。