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

本文部分来源于:  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java命令行界面(第1部分):Apache Commons CLI

尽管我通常使用Groovy编写要从命令行运行的JVM托管脚本,但是有时候我需要解析Java应用程序中的命令行参数,并且有很多库可供Java开发人员用来解析命令行参数。 在本文中,我将介绍这些Java命令行解析库中最著名的一种: Apache Comm…

python自带的idle输入python_打开python自带IDLE出的问题

打开python自带IDLE编辑器时出的问题IDLE cant bind to a TCP/IP port, which is necessary tocommunicate with its Python execution server. This might bebecause no networking is installed on this computer. Run IDLEwith the -n command line switch to start without…

linux 虚拟机新增磁盘,linux(虚拟机)下新增磁盘配置

Linux的硬盘识别:(1)”fdisk -l”命令可以列出系统中当前连接的硬盘设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息.(2)创建新硬盘分区命令参数:fdisk可以用m命令来看fdisk命令的内部命令;a:命令指定启动分区;d&#xf…

丙烯怎么做成流体丙烯_韧性好强度高的聚丙烯复合材料怎么做?让人工智能来帮忙...

01背景介绍聚丙烯(PP)是一种应用广泛的通用塑料,价格便宜、力学性能好、热稳定性高,在机械、汽车、电子电器、建筑、纺织、包装和食品工业等领域应用广泛。聚丙烯韧性和冲击强度不高,限制了它的应用。加入热塑性弹性体(TPE),如苯乙…

1.x到2.x的迁移:可观察与可观察:RxJava FAQ

标题不是错误。 rx.Observable 1.x的io.reactivex.Observable与2.x的io.reactivex.Observable完全不同。 盲目升级rx依赖关系并重命名项目中的所有导入将进行编译(稍作更改),但不能保证相同的行为。 在项目的早期, Observable in …

linux 线程 拷贝,linux下实现多线程拷贝命令

实现多线程拷贝命令,如:./multithread_copy srcfile destfile N(拷贝线程个数)难点:内存映射mmap。给每一个线程合理的分配任务。多线程的实现。具体的实现代码如下:/********************************************************************…

vivado安装_Vivado下载与安装指南

Vivado下载与安装指南目前,vivado已推出2019.1版本,实验室所安装的为2018.3版本,由于软件向下兼容的特性,建议安装2018版本,若安装2019版本,请自带笔记本,安装过程与之前没有差别,这…

linux中kafka主题修改分区,kafka_2.11-2.0.0的部署与配置修改

1 [yunmini01 config]$ pwd2 /app/kafka/config3 [yunmini01 config]$ vim server.properties4 ############################# Server Basics #############################5 # 每一个broker在集群中的唯一标示★★★6 # 比如mini01 为0 mini02 为1 mini03 为27 broker.id089…

python中字符串乘法_python leetcode 字符串相乘实例详解

给定两个以字符串形式表示的非负整数 num1 和 num2 ,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 "2", num2 "3"输出: "6"示例 2:输入: num1 "123", num2 "456&quo…

嵌入式基于linux电机控制器,基于嵌入式Linux的移动机器人控制系统

使用select机制监控是否语音识别结果,在超出等待时间后,会退出等待并重新初始化语音模块LD3320,释放公共资源,这样也使得系统能够及时响应LD3320的MP3播放功能,避免了在长时间没有语音识别结果时,系统进入卡…

jdk8运行jdk7的代码_即使在jdk中也有错误的代码

jdk8运行jdk7的代码Java 7,TreeSet和NullPointerException。 最近,我尝试用Java 7编译一个用Java 6开发的项目。在执行测试过程中发生了很多有趣的事情,在Java 6中使用Java 7平稳运行的测试失败了! 因此,我必须理解为什…

zen of python什么意思_如何理解「The Zen of Python」?

import thisThe Zen of Python, by Tim PetersPython之禅 ,by Tim PetersBeautiful is better than ugly.优美好于丑陋(Python 以优美的代码为其风格,不要写丑陋的代码)Explicit is better than implicit.明了好于隐晦(Python的每一行代码、每一个变量、…

linux用pipe创建的文件类型,linux文件类型之 管道

inux管道管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别。有名管道叫namedpipe或者FIFO(先进先出),可以用函数mkfifo(…

Spring Webflux – Kotlin DSL –实现的演练

在先前的博客文章中,我描述了Spring Web Framework中的响应式编程支持Spring Webflux如何使用基于Kotlin的DSL使用户能够以非常直观的方式描述路由。 在这里,我想探索一些底层实现。 描述一组端点的样本DSL看起来像这样: package sample.ro…

python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)

本篇主页内容:match的基本使用,search的基本使用,findall,finditer的基本使用,匹配中文,贪婪与非贪婪模式Python爬虫教程-19-数据提取-正则表达式(re)正则表达式:一套规则,可以在字符串文本中进…

c语言作业请输入一个运算符,C语言书面作业1(有答案版)..doc

C语言书面作业1(有答案版).书面作业1(数据类型、变量、输入/输出、运算符与表达式、选择结构、循环结构)一、判断题:在正确的说法前面填写T,在错误的说法前面填写F(每题1分)[得分: ]()()()()标识符中可以出现下划线但它不可以放在标识符的开头…

windows server 驱动精灵_还在用Windows文件共享?我来教你一键摆脱Windows海量小文件使用和备份的噩梦...

每当我问到客户,“你用什么存储产品作为文件共享?”经常听到的一个答案(自豪滴)是,“文件共享需要存储么?我们用Windows就可以做到。”Windows就是个百宝箱,什么都能往里装,就像你家冰箱一样。众所周知&…

c语言编写日历作业,c语言实现一个简单日历

满足三个需求:1.输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。2.输入年月,输出该月的日历。3.输入年月日,输出距今天还有多少天,星期几,是否是公历…

将EntityManager.refresh添加到所有Spring数据存储库

在我以前的文章《从Spring Data JPA访问EntityManager》中,我展示了如何扩展单个Spring Data JPA存储库以访问EntityManager.refresh方法。 这篇文章演示了如何将EntityManager.refresh添加到所有Spring Data Repository。 源代码 第一步是定义您的界面- package …

pb 应用 迁移 linux_功能化生物炭应用研究取得系列进展

土壤营养元素流失、重金属污染是当前全球面临的突出环境问题。生物炭因其具有比表面积较大、吸附性能高和成本低等优点而在环境修复领域日益受到广泛关注,被作为水处理吸附剂、土壤修复改良剂广泛应用于农业土壤改良和环境中重金属的修复和钝化。但通常情况下&#…