本文部分来源于:  http://hi.baidu.com/peruke/blog/item/b8de06ec6a04583b27979132.html

系统是fedora:

glibc实现了从RTC时间到人可读时间的一个转换,一般系统不适用 环境变量TZ进行时区的设置,因为环境变量存在一些缺陷,在fedora中,系统是的时区设置为时区文件/etc/localtime,这个文件是一个/usr/share/zoneinfo/ 路径下面的时区文件的 软连接。时区文件的定义实在glibc的源码中就已经定义好的,因为glibc中有单独的timezone文件夹。

环境变量TZ的格式以及tzset()说明如下:

TZ=tzn[+|-]hh[:mm[:ss]][dzn]

eg:TZ="CST-8"

tzn:三字母时区名,例如PST,你必须指出本地时间距UTC的偏移量。

hh:UTC与本地时间的时差,任选带符号的。

mm:分钟,由冒号(:)与hh分隔开。

ss:秒钟,用冒号(:)与mm分隔开。

dzn:三字母夏令时时区例如PDT。如果夏令时没作用,设置TZ时不设置dzn的值。C运行库假设在计算夏令时(DST)时执行美国的规则。

其实tzn和dzn可为任意3个字母,只要中间的时差设置正确,localtime()和gmtime()函数调用都会处理正确。要注意一点,比如要将时区TZ设置为中国所在的东八区(即UTC+8:00),不使用夏令时,使用如下语句:

setenv("TZ", "GMT-8", 1);

注意是GMT-8而不是GMT+8,要不就设为了西八区,要比UTC还慢8个小时,这一点比较令人费解。

例如,为了设置TZ环境为德国对应的当前时区,你可以使用如下语句之一:

set TZ=GST-1GDT

set TZ=GST+1GDT

这些字符串使用GST指出德国标准时间,假设德国是超前UTC一个小时,并假设夏令时起作用。

如果TZ值没设置,tzset试图使用操作系统指定的时区信息,在Windwos NT和Windows95之下,这个信息指定在控制面版的日期/时间应用中,如果tzset不能获取这些信息,它缺省使用PST8PDT,它指定为太平洋标准时间。

基于TZ环境变量的值,当调用tzset时把如下值赋给全局变量daylight、timezone和tzname:

全局变量    说明                                                     缺省值

daylight      如果在TZ设置中指定夏令时时区          1则为非0值;否则为0

timezone    UTC和本地时间之间的时差,单位为秒   28800(28800秒等于8小时)

tzname[0] TZ环境变量的时区名称的字符串值        如果TZ未设置则为空 PST

tzname[1]   夏令时时区的字符串值;                        如果TZ环境变量中忽略夏令时时区则为空PDT在上表中daylight和tzname数组的缺省值对应于"PST8PDT"。

如果从TZ环境变量忽略DST时区,daylight的值为0,ftime,gmtime和localtime函数对于它们的DST标志返回0。

例子

/ *

TZSET.C: This program first sets up the time zone by*

placing the variable named TZ=EST5 in the environment*

table. It then uses tzset to set the global variables*

named daylight, timezone, and tzname.*/

#include

#include

#include

void main( void )

{

if( putenv( "TZ=EST5EDT" ) == -1 )

{

printf( "Unable to set TZ/n" );exit( 1 );

}

else

{

tzset(); printf( "daylight = %d\n", daylight );

printf( "timezone = %ld\n", timezone );

printf( "tzname[0] = %s\n", tzname[0] );

}

exit( 0 );

}

输出

daylight = 1

timezone = 18000

tzname[0] = EST

参见

asctime,ftime,gmtime,localtime,time,utime

1,时间保存在硬件实时钟(RTC)中,RTC由主板电池供电,即使关断电源也不会造成时间丢失。

2,系统启动时从RTC获取时间,这个步骤在rc.sysinit中做:

a,首先从/etc/sysconfig/clock中获取RTC相关参数UTC/ARC/SRM。UTC为true表示RTC保存的时间是UTC时间,false表示保存的是本地时间。ARC与SRM的含义参考hwclock的manpage,一般false即可;

b,根据上面获取的内容构造hwclock命令的参数,将时间由RTC读取到系统时钟。

*需要说明的一点是hwclock的输出是本地时间,localtime/utc参数只是用来告诉hwclock命令COMS时区是哪个时区。比如Linux系统的系统时区设置为CST(中国标准时间),COMS时间采用墙上时间,即COMS时区也是CST,这时如果使用--utc参数,会让hwclock误以为COMS时区为UTC,所以输出的时间会自动+8。

3,tzset():tzset在程序中用来初始化tzname等全局变量,它首先试图从环境变量“TZ”中获取时区,如果TZ环境变量存在,即getenv("TZ")返回值不为NULL,且包含内容有效,则使用TZ值;如果该变量存在但内容无效,比如包含错误的时区名字,则使用UTC;如果该变量不存在,即getenv("TZ")返回NULL,则查找系统时区设置文件,一般是/etc/localtime。localtime所指文件的内容格式可参考tzfile(5)。

4,time():返回自00:00:00 UTC, January 1, 1970到现在所经过的秒数,注意,是UTC。

5,ctime()/localtime()/mktime():这类和时区相关的函数内部会调用tzset,但只是第一次调用tzset会做实际初始化,后面的调用都是直接返回。

6,系统关闭时,如执行shutdown/reboot/poweroff/halt等操作后,系统时间会保存到RTC中,这是在halt脚本中完成的,参看/etc/init.d/halt内容。

原文:http://www.cnblogs.com/bibaodi/p/4869007.html

linux时间路径,关于linux中的时间 时区问题相关推荐

  1. linux 多路径重启,(linux多路径连接iScsi存储重启自动连接.docx

    (linux多路径连接iScsi存储重启自动连接 RHEL系统带有iSCSI initiator软件,下面描述如何配置iSCSI Initiator实现对ISCSI卷的访问Linux iscsi 介绍 ...

  2. linux 相对路径当前目录,Linux绝对路径和相对路径

    前言 在使用linux远程连接操作文件时,我们就会遇到一个问题就是我们必须知道文件的存放位置,才能准确的找到文件并操作文件,在这里指明文件地址就有两种方式,那就是绝对路径和相对路径. Linux文件目 ...

  3. linux 相对路径当前目录,Linux绝对路径和相对路径详解

    前言 在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置,例如Linux文件系统的层次结构你知道吗?中提到的 /home/usr就表示的是 usr目录所在的路径.只要我们告诉 Li ...

  4. android 时间显示格式,Android setting中修改时间显示格式后,桌面的数字时钟widget小部件显示不更新...

    桌面的数字时间的widget的显示主要需要关注的有如下5个. vendor\mediatek\proprietary\packages\apps\DeskClock\src\com\android\a ...

  5. oracle sql比较时间大小,Oracle数据库中日期时间的操作比较和加减

    Oracle数据库中日期时间的操作比较和加减 Oracle关于时间/日期的操作 1.日期时间间隔操作 当前时间减去7分钟的时间 select sysdate,sysdate - interval '7 ...

  6. 向mysql中插入时间_Java向mysql中插入时间的方法

    ava向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 java向MySQL插入当前时间的四种方式 第一种:将java.util.Date类型的时 ...

  7. php 中日期时间函数大全,PHP 中日期时间函数 date() 用法总结

    [导读] date()是我们常用的一个日期时间函数,下面我来总结一下关于date()函数的各种形式的用法,有需要学习的朋友可参考.格式化日期date() 函数的第一个参数规定了如何格式化日期 时间.它 ...

  8. debian linux下载路径,Debian(Linux)系统目录简单说明

    bin:基础命令执行档 boot:引导装置器的静态链接文件 dev:设备档 etc:主机特定的系统配置 lib:基本共享库及基本内核模块 mnt:用于临时挂载一个文件系统 proc:系统信息的虚拟目录 ...

  9. python时间比较-在python中做时间比较

    时间比较是很常用的功能,python对此的支持还不错,有一个timedelta对象,保存了两个时间的差值,可以精确到微妙. 比较两个日期(年月日)的差: >>> from datet ...

最新文章

  1. css样式之background详解(格子效果)
  2. 牛津大学的研究人员首次在人体植入“闭环”生物电子研究系统
  3. ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测daiding
  4. SqlServer千万级以上的数据表查询优化方案《冷热数据库分离》的思路
  5. 有哪些编辑软件可以编辑c语言,可以推荐一个手机上最好用且免费的c语言编辑器吗?...
  6. 【OJ】洛谷数组题单题解锦集
  7. ZZULIOJ 1100: 求组合数(函数专题)
  8. [转载]【Java EE】Struts2.1.6与Spring2.5.6框架整合
  9. 极限挑战logo的制作教程
  10. android升级异常,升级AndroidX遇到的问题
  11. 了解 svg 图像和元素创建
  12. bitnami_redmine3.3.0-1 问题及备份恢复
  13. VC++实现快速截屏
  14. android 博饼代码,中秋博饼游戏下载
  15. 母婴行业竟也可以免费送?两种案例让你全面了解新的赚钱模式!
  16. 【Qualcomm】浏览器无法登录高通网站的修改方法
  17. debian android编译,android 平台运行debian
  18. 基于FPGA的深度卷积神经网络的加速器设计
  19. MAC下配置openCV
  20. 抽奖机(用除法)1.0-python

热门文章

  1. zabbix前端php界面,Zabbix Web UI
  2. MySQL的存储引擎InnoDB,B+Tree数据结构索引的实现原理图(聚簇索引/聚集索引)
  3. excel npoi 连接_Net操作Excel_NPOI(示例代码)
  4. java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本
  5. 向 mysql导入数据 源码_MySQL 导入数据
  6. diveintopython3 official_Python 学习资料整理
  7. python连接不上数据库_pycharm连接mysql数据库连接不上
  8. 多线程队列的算法优化
  9. php 异常值检测,PHP中的错误处理、异常处理机制分析
  10. 微型计算机使用的普通编码是,2017计算机一级考试选择题练习及答案(2)