一、相关内容

Glibc中存储时间转换信息的有:tzname、timezone、daylight三个全局变量,声明在time.h中。

Glibc中关于时区设置的函数有:tzset(),声明在time.h中。此函数由依赖于时区的其他时间转换函数(mktime、localtime、ctime)自动调用。

tzset()主要用于设置时间变量,它通过获取TZ环境变量初始化tzname变量,在类

System-V系统中,它同时设置timezone(相对UTC以西的秒数,向西为正,向东为负)和daylight变量。如果环境没有配置TZ,则使用系统时区(系统时区是通过将/etc/localtime链接到tzfile格式文件配置);如果环境中配置了TZ,但其值为空或无法解析则使用协调世界时(UTC)。

具体相关信息可通过man tzset查看。

二、环境变量TZ和TZDIR

TZ:如果设置了此变量,则其值优先于系统配置的时区。

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

三、时区格式及设置

时区环境变量TZ共有两种格式:一种直接使用包含时区的字符串,另一种指定从相应文件中读取时区信息,具体如下:

1. 格式一

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

std:表示时区缩写(详情),比如CST。经测试可任意值,但必须至少3个字母,否则会不生效。

offset:表示当地时间和UTC时间的偏移。如果当地时区在本初子午线以西,偏移量为正;如果当地时区在东边,偏移量为负。

dst[offset]:指定夏令时时区名称及偏移时间,格式为[+|-]hh[:mm[:ss]],跟std offset类似,若省略偏移量,则默认为比标准时间提前一小时。

start[/time],end[/time]:指定夏令时生效及结束时间。start和end有如下几种格式:

1)Jn:n表示从1到365的儒略日。闰年不考虑在内,所以2月28日,n为59;3月1日,n为60。

2)n:n表示从0到365的儒略日,包含闰年的2月29日。

3)Mm.w.d:

m:指一年中的第几月(1 <= m <= 12)。

w:指一个月中的第几周(1 <= w <= 5),1表示第一周,5表示最后一周。

d:指一周中的第几天(0 <= d <= 6),0表示星期天。

time:该字段表示本地时间对夏时制生效或结束的时间,如果省略默认为02:00:00。

示例:

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

说明:

NZST,表示新西兰标准时间;-12:00:00表示比UTC早12小时;NZDT,表示新西兰夏时制时间;-13:00:00,表示夏时制时间比UTC早13小时(即比标准时间快1小时);M10.1.0,M3.3.0表示夏令时从10月第一个星期日02:00:00开始到3月第三个星期日02:00:00结束。

2. 格式二

TZ=:[filespec]

filespec:指定获取时区的文件,省略或无效则使用协调世界时(UTC)。如果filespec路径不是以’/’开头(绝对路径),则在系统时区目录(/usr/share/zoneinfo/)下查找对应文件。

3个相关路径:

/etc/localtime:系统时区文件,一般链接到具体某个时区文件。

/usr/share/zoneinfo/:系统时区数据库目录。

/usr/share/zoneinfo/posixrules:当TZ变量包含DST时区但没有开始和结束时间时,则使用该文件规则进行解析。

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

示例:

TZ=":Pacific/Auckland"

说明:

指定在系统时区数据库目录(/usr/share/zoneinfo/)下查找Pacific/Auckland文件,作为获取时区信息文件。

四、代码示例

环境变量TZ,在代码中可以通过setenv或putenv设置,但只针对本进程有效。示例如下:

#include #include #include int main(int argc, const char *argv[])

{

time_t now;

time(&now);

printf("UTC now time:%s\n", asctime(gmtime(&now)));

setenv("TZ", "NZST-12:00:00", 1);

printf("NZST now time(not consider DST):%s\n", ctime(&now));

setenv("TZ", ":Pacific/Auckland", 1);

printf("NZST now time:%s\n", ctime(&now));

setenv("TZ", "NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0", 1);

printf("NZDT now time:%s\n", ctime(&now));

return 0;

}

运行结果:

linux夏令时配置文件,Linux中有关时区及夏令时设置(TZ环境变量)相关推荐

  1. linux如何设置Java环境变量呢?

    转自: linux如何设置Java环境变量呢? Linux中运行java程序,需设置java环境变量,才能运行java程序,那么如何运行java程序呢? 下文笔者将一一道来,如下所示 实现思路:1.下 ...

  2. Linux中有关时区及夏令时设置(TZ环境变量)

    一.相关内容 Glibc中存储时间转换信息的有:tzname.timezone.daylight三个全局变量,声明在time.h中. Glibc中关于时区设置的函数有:tzset(),声明在time. ...

  3. linux设置anaconda环境变量,在Linux中永久设置Anaconda环境变量的方法

    [感谢:http://www.codesec.net/view/459539.html] 如果在安装Anaconda的过程中没有将安装路径添加到系统环境变量中,需要在安装后手工添加: 1.在终端输入$ ...

  4. linux环境oracle环境变量,Linux下设置oracle环境变量

    Linux设置Oracle环境变量 方法一:直接运行export命令定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新s ...

  5. Linux 环境编程 day01 Linux系统介绍、GNU编译工具、静态/共享库、环境变量表

    Linux 环境编程 day01 Linux系统介绍.GNU编译工具.静态/动态库.环境变量表 学习Linux环境编程的原因 UNIX系统介绍 Linux系统介绍 GNU工程 POSIX标准 GNU通 ...

  6. Linux 设置 jdk 环境变量

    本文介绍在 Linux 中设置 jdk 环境变量方法,适用于 CentOs 和 Ubuntu 等 Linux 版本. 准备 JDK 文件 这里准备的 jdk 版本是 1.8.0_131. 链接:htt ...

  7. linux php和java环境变量配置_Linux设置PHP环境变量

    区分 环境变量从时间上可分为临时性和永久性,这里只说明永久性的设置 操作 PHP 安装目录 找到PHP的安装目录:我这里是/phpstudy/server/php 其bin目录为:/phpstudy/ ...

  8. 【linux】查看环境变量|getenv setenv设置获取环境变量

    目录 环境变量类型 查看环境变量 系统的环境变量 进程的环境变量 初始化时载入的环境变量 执行过程中设置的环境变量 环境变量原理 通过函数存取环境变量 getenv & setenv 获取&a ...

  9. Linux export 命令及如何删除export设置的环境变量

    背景: Linux export 命令用于设置或显示环境变量. 在 shell 中执行程序时,shell 会提供一组环境变量.export 可新增,修改或删除环境变量,供后续执行的程序使用.expor ...

  10. TZ环境变量,时区,夏令时

    #include <stdio.h> #include <sys/time.h> #include <stdlib.h> #include <unistd.h ...

最新文章

  1. 数据蒋堂 | DB与NoSQL的访问性能
  2. X3650M3 客户端联不上加密狗!
  3. 你在京东购买的商品,是怎么出现在抖音里面的?
  4. Git分支 and PullFetchMerge
  5. java cookie id,我如何在Java中获取会话ID
  6. 湖南省计算机二级tc,湖南计算机二级考试大纲,重点内容谢谢!
  7. JAVA集合三:几种Set框架
  8. 大数据Hadoop最新版实战Linux Ubuntu 16.04安装与运行测试例子...
  9. ngod规范_[转载]NGOD一些感悟
  10. IDEA中阿里p3c代码规范
  11. 为什么浏览器全面禁用三方 Cookie
  12. 什么是CDN,有何作用?
  13. 【技术】5G技术的应用场景及发展趋势
  14. 安装Mathtype后无法使用——已解决
  15. 语义分割各种评价指标实现
  16. 第4章第10节:如何制作一个模拟手机解锁的动画 [SwiftUI快速入门到实战]
  17. lombok 异常:Lombok needs a default constructor in the base class less... (Ctrl+F1) Inspe
  18. IC芯片设计项目管理004:任务制定5W2H
  19. 大一上学期学习生活情况总结
  20. 项目开发中软件测试有哪些工作?

热门文章

  1. 维恩图是什么?如何使用维恩图?
  2. DGIOT物联网平台简介
  3. 一文详解SLAM回环及优化
  4. IDEA插件系列(67):ReadHub插件——新闻阅读器
  5. 2020入侵防御系统(IPS)TOP10
  6. 猫哥教你写爬虫 039--存储数据
  7. 微信小程序中转义字符的处理
  8. vue 项目中使用 评论功能 带emoji表情包
  9. Unity3D坦克大战游戏开发——学习笔记(上)
  10. 微信小程序——根据当前定位查询附近商家