【Linux】服务器时区 [ CST | UTC | GMT | RTC ]

2024-05-11 1149阅读

温馨提示:这篇文章已超过370天没有更新,请注意相关的内容是否还可用!

【Linux】服务器时区 [ CST | UTC | GMT | RTC ]

目录

1. 硬件时间(Real_TIME Clock [RTC time])

1.1 硬件时间简介

1.2 如何使用硬件时间

2. 系统时间(UTC时间)(Universal time)

2.1 系统时间简介

2.2 UTC时间

3. 本地时间(Local time)

3.1 本地时间简介

3.2 如何使用本地时间

4. 时区(Time zone)

4.1 时区简介

4.2 如何设置时区

4.3 docker容器中的时区(与宿主机日期时间同步)

5. 夏令时(Daylight Saving Time)(DST)

5.1 夏令时简介

5.2 夏令时地区


理解时间:硬件时间、系统时间(UTC时间)、本地时间、时区与夏令时

CST: 中国标准时间(China Standard Time),

UTC: 协调世界时,又称世界标准时间,简称UTC

GMT: 格林尼治标准时间(旧译格林威治平均时间或格林威治标准时间;英语:Greenwich Mean Time,GMT)

RTC:Real_TIME Clock 硬件时间

1. 硬件时间(Real_TIME Clock [RTC time])


1.1 硬件时间简介

硬件时间,也被称为实时时钟(RTC),是指计算机主板上的一个独立于操作系统的设备,它在电源关闭甚至断电情况下也能保持运行。其功能是记录当前的日期和时间。

1.2 如何使用硬件时间

大部分操作系统在启动时会从RTC读取时间,然后设置系统时间。同样,操作系统也可以将系统时间写回到RTC中。

在Unix和类Unix系统中,hwclock命令可以用来查询和设置RTC时间。例如:

# 查询硬件时间
hwclock --show
# 将系统时间设置为硬件时间
hwclock --systohc
# 将硬件时间设置为系统时间
hwclock --hctosys

【Linux】服务器时区 [ CST | UTC | GMT | RTC ]

2. 系统时间(UTC时间)(Universal time)


2.1 系统时间简介

系统时间是计算机内部使用的时间,它通常在启动时从RTC设置,然后由系统时钟进行跟踪。系统时钟是操作系统内核的一部分,可以以毫秒或纳秒级别提供精确时间。

2.2 UTC时间

系统时间通常使用协调世界时又称世界统一时间(UTC)表示。协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。

在Unix和类Unix系统中,date命令可以用来查询和设置系统时间:

# 查询系统时间(UTC)
date -u
# 查询本地时间(由系统时间UTC和时区共同决定)
date
# 设置本地时间(后面那串是本地时间)(设置本地时间会同样设置系统时间,只不过会自动帮你做时区转换)
date -s "2022-01-01 00:00:00"
# 直接设置系统时间(不推荐,一般通过设置本地时间来设置系统时间,因为这样设置你还得把后面那串时间计算一下时区)
date -u -s "2022-01-01 00:00:00"

3. 本地时间(Local time)


3.1 本地时间简介

本地时间是系统时间经过时区转换后的时间。时区是根据地理位置确定的,全球分为24个时区,每个时区大约代表15度的经度。例如,北京时间是UTC+8,而伦敦时间是UTC+0。

3.2 如何使用本地时间

在Unix和类Unix系统中,date命令默认显示的是本地时间:

# 查询本地时间
date

【Linux】服务器时区 [ CST | UTC | GMT | RTC ]

4. 时区(Time zone)


4.1 时区简介

时区是为了方便统一时间而划分的地理区域。全球被划分为24个时区,每个时区大约代表15度的经度。各时区的时间以UTC(协调世界时)为基准,东边的时区比UTC时间晚,西边的时区比UTC时间早。

4.2 如何设置时区

在Unix和类Unix系统中,可以使用tzselect命令选择时区,然后将选定的时区链接到/etc/localtime:

# 选择时区
tzselect
# 设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

【Linux】服务器时区 [ CST | UTC | GMT | RTC ]

4.3 docker容器中的时区(与宿主机日期时间同步)

Docker容器的默认时区取决于使用的基础镜像。许多常见的基础镜像(例如Debian,Ubuntu等)的默认时区通常是UTC(协调世界时)。这意味着如果没有在创建或运行Docker容器时显式设置一个特定的时区,那么容器内部的时间将按照UTC来显示。

如果希望docker容器中的时区与宿主机保持一致,可以在容器docker run的时候增加以下挂载:

-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro\
  • /etc/timezone: 这个文件包含了当前设置的时区信息。比如,如果系统设置为美国东部时区,这个文件的内容可能会是 America/New_York。
  • /etc/localtime: 这个文件是当前设定的时区对应的数据文件的复制品或者软链接。这个文件用于提供本地化的日期和时间显示。

    这两个文件在系统中扮演着不同的角色,而且都是影响系统时间表现的重要因素。如果希望让Docker容器的时间与宿主机完全一致,那么在运行容器时需要同时挂载这两个文件:

    docker run -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro your_image

    只挂载 /etc/timezone 或 /etc/localtime 可能会导致一些问题,比如在处理跨时区的日期和时间时可能出现错误。

    默认情况下,Docker容器并不会自动挂载 /etc/localtime 文件。容器是通过宿主机的内核获取物理时间的。

    Docker容器虽然在很多方面都与宿主机隔离,但它们共享同一个内核。这意味着,当容器需要获取当前的物理时间(例如,调用 time() 系统调用)时,它会直接从宿主机的内核获取这个信息。这就是为什么即使不挂载 /etc/localtime,容器中的程序仍然能够获取到正确的物理时间。

    然而,时区信息并不只是物理时间,它还涉及到逻辑时间的处理,包括日历计算、夏令时调整等等。这些信息是存储在 /etc/timezone 和 /etc/localtime 这两个文件中的。如果希望容器中的程序能够正确地处理这些时区相关的问题,那么需要将这两个文件同时挂载到容器中,缺一不可。

    5. 夏令时(Daylight Saving Time)(DST)


    5.1 夏令时简介

    夏令时是为了利用日照时间而在夏季调整时间的做法。通常情况下,夏令时会在春末将时间提前一小时,然后在秋初再把时间延后一小时。这样可以使人们在夜晚有更多的日光,从而节省电力。

    5.2 夏令时地区

    夏令时在全球范围内的采用情况并不统一,很多国家或地区都有自己特定的规定。

    采用夏令时的地区

    欧洲:大部分欧洲国家在每年3月的最后一个星期日开始夏令时,到10月的最后一个星期日结束。这包括英国、法国、德国、西班牙等国。

    北美:包括美国(除了亚利桑那州和夏威夷)、加拿大(除了萨斯喀彻温省和一些地方)和墨西哥的一些地区。北美的夏令时从每年3月的第二个星期日开始,到11月的第一个星期日结束。

    澳大利亚:只有南澳大利亚州、新南威尔士州、塔斯马尼亚州和维多利亚州实行夏令时,从每年10月的第一个星期日开始,到次年4月的第一个星期日结束。

    不采用夏令时的地区:

    中国:中国自1991年起就未再实行夏令时。

    日本:日本自1952年以来就没有实行夏令时。

    印度:印度没有实行夏令时。

    亚利桑那州和夏威夷:这两个美国的地区不采用夏令时。

    大部分非洲和南美洲国家:除了一些特定的国家或地区,大部分非洲和南美洲的国家都不实行夏令时。

    5.3 如何处理夏令时

    大多数现代操作系统和编程语言的时间库都可以自动处理夏令时。例如,在Python中,pytz库提供了世界各地的时区数据,并可以自动处理夏令时:

    from datetime import datetime
    import pytz
    # 获取当前的UTC时间
    now = datetime.now(pytz.utc)
    # 转换为纽约时间(自动处理夏令时)
    ny_time = now.astimezone(pytz.timezone('America/New_York'))
    print(ny_time)
    

    同样,在Unix和类Unix系统中,只要正确设置了时区,系统就会自动处理夏令时。

    Linux 硬件时间(RTC time)、系统时间(UTC时间、Universal time)、本地时间(Local time)、时区(Time zone)与夏令时(DST)解析-CSDN博客

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]