系统时间 硬件时间

在Linux中有硬件时钟与系统时钟两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟,那么它们之间就会存在差异。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。
用date命令对系统时间进行设置后,并不会去修改硬件时钟,所以系统重启后,系统时间还算会去读取硬件时间,这就是为何date设置失效到原因。
因此,需要在设置系统时间后,将系统时间同步到硬件时钟。
clock/hwclock:
显示与设定硬件时钟(query and set the hardware clock (RTC)),两个命令相同。RTC=Real Time Clock,也就是硬件时钟。
命令参数:
-r, --show 读取并打印硬件时钟(read hardware clock and print result)
-s, --hctosys 将硬件时钟同步到系统时钟(set the system time from the hardware clock)
-w, --systohc 将系统时钟同步到硬件时钟(set the hardware clock to the current system time)

时区设置

环境变量TZ和TZDIR

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

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

时区格式及设置

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

格式一

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结束

格式二

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 <time.h>
#include <stdio.h>
#include <stdlib.h>
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 系统时间 硬件时间 及 时区设置相关推荐

  1. linux 系统时间 硬件时间,linux 设置系统时间和硬件时间

    linux 的系统时间有时跟硬件时间是不同步的 Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel ...

  2. linux修改硬件系统时间,Linux修改日期、时间,系统与硬件时间

    Linux的时间分为两种,硬件时间和系统时间两种: 一.查看与修改系统时间 查看系统时间:date # date Fri Nov 26 15:20:18 CST 1999 用指定的格式显示系统时间:  ...

  3. linux时间配置文件,linux系统下的时间配置综述

    一.时间类型分为: 1.网络时间(设置时区,ntp服务器同步的时间) 2.系统时间,当前系统所显示的时间 3.硬件(RTC)时间,主板上面Bios的时间 一般设置为:系统时间与网络时间同步,系统时间写 ...

  4. c得到当前时分秒 linux_Linuxc - Linux系统下的时间知识点

    Unix/Linux系统下的时间知识点 一.Unix/Linux系统的几种时间结构: 1.time_t 类型: 长整型,一般用来表示从1970-01-01 00:00:00时以来的秒数,精确度:秒: ...

  5. 获取系统信息1——linux系统中的时间

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 一.关于时间的概念 1.GMT时间 GMT是格林尼治时间,也就是格林尼治地区的当地时间: 用格林尼治的当地时间作为 ...

  6. linux系统中的时间

    1.jiffies的引入 (1)jiffies是Linux中的一个全局变量,这个变量用来记录以内核的节拍时间为单位时间长度的一个数值. (2)内核配置的时候定义了一个节拍时间,实际上linux内核的调 ...

  7. linux系统怎么看时间,linux系统如何查看当前时间

    Linux ls命令详解Linux中ls命令用于显示指定工作目录下之内容,其内容就是指定的工作目录所含之文件及子目录,该命令的用法为"ls [参数] [目录名]",其常用参数有&a ...

  8. linux查看当前间命令,Linux系统查看当前时间的命令

    转自:https://www.cnblogs.com/redfire/p/7702213.html 一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" ...

  9. c linux time微秒_qt linux系统获取当前时间(精确到毫秒、微秒)-Go语言中文社区...

    qt linux系统获取当前时间(精确到毫秒.微秒) Windows系统获取系统时间可以直接用SYSTEMTIME t;,将Windows平台程序移植到linux后,SYSTEMTIME将不再试用,如 ...

最新文章

  1. Waveform Audio 驱动(Wavedev2)之:WAV API模拟
  2. bower使用中遇到的问题
  3. win7系统下装ubuntu系统
  4. ios 表情符号 键盘_更方便地输入颜文字表情:教你如何在 iPhone 键盘中添加颜文字...
  5. 如何提高下载速度(校园网怎么提高下载速度)
  6. 京东商品历史价格信息API接口-(item_history_price-获取商品历史价格信息API接口),京东API接口
  7. 更好的 java 重试框架 sisyphus 的 3 种使用方式
  8. GTD时间管理学习心得(1)
  9. 球半足球分析,瑞典超:哥德堡 VS 代格福什 7月5日
  10. html java实训心得,学习中关于HTML的总结与一些心得
  11. Vpp和dBm的转换
  12. 蓝桥杯 算法提高 9-2 文本加密(c语言版详细注释)
  13. 【Go语言 · 学习笔记】
  14. 如何从bitbucket到github的所有分支移动git存储库?
  15. 浅谈XMLHttpRequest
  16. 支付中心,防止重复支付的一些思路!
  17. 采购计算机申请,申请购置电脑的请示
  18. 2.淘宝店铺轮播图装修方法代码
  19. 使用 Android 备份和恢复功能留住用户
  20. ELM——一种适用于经济学和大数据的机器学习方法

热门文章

  1. 小狐狸对于个人职业规划的思考
  2. TCL集团2013校园招聘C/C++方向笔试题
  3. 基于SpringBOOT的订餐系统
  4. chinapay 对接后台快捷支付交易
  5. 【重磅新闻】罗永浩约战王自如:一场两败俱伤的战役!
  6. 怎样用文言文优雅地装逼!28万行唐诗中找出对称矩阵
  7. 线性函数,C语言方式实现
  8. 如何用python画国旗?
  9. ubuntu1804
  10. python中函数的定义以及如何编写一个函数