Linux系统日期与时区

date 命令 —查看与设置系统时间

基本语法

date [-d] [+格式化字符串]
  • -d:按照给定字符串显示日期,常用于日期计算(如 -d '+1 day')。

  • +格式化字符串:自定义输出格式,使用特定占位符。

常用格式化占位符

占位符 含义 示例
%Y 年份(4位) 2026
%y 年份后两位 26
%m 月份(01-12) 03
%d 日(01-31) 01
%H 小时(00-23) 14
%M 分钟(00-59) 30
%S 秒(00-59) 45
%s 时间戳(1970-01-01 以来的秒数) 1719871234

使用示例

查看当前系统时间(默认格式)
date # Fri Apr 14 03:40:23 PDT 2023

image-20230414184131416

按指定格式显示
date "+%Y-%m-%d"              # 2023-04-14
date "+%Y-%m-%d %H:%M:%S"     # 2023-04-14 14:30:45
date "+%s"                    # 时间戳
image-20230414184148449
日期计算(配合 -d 选项)
# 明天
date -d '+1 day' "+%Y-%m-%d"
# 昨天
date -d '-1 day' "+%Y-%m-%d"
# 下个月
date -d '+1 month' "+%Y-%m-%d"
# 上一小时
date -d '-1 hour' "+%Y-%m-%d %H:%M:%S"
# 1年2个月3天后
date -d '+1 year +2 months +3 days' "+%Y-%m-%d"

Linux 时区设置

问题现象

使用 date 查看时间可能不准确,因为系统默认时区可能不是东八区(CST,中国标准时间)。

修改时区为东八区(上海)

# 删除原有的本地时间配置
sudo rm -f /etc/localtime

# 创建软链接指向上海时区文件
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 执行后,date 显示的时间即为东八区时间(如 CST)。

NTP 时间同步

安装 NTP 服务

# 使用 yum 安装(适用于 CentOS/RHEL)
sudo yum -y install ntp

启动并设置开机自启

sudo systemctl start ntpd      # 立即启动
sudo systemctl enable ntpd     # 设置开机自启

手动同步时间(可选)

# 使用 ntpdate 手动校准(需 root 权限)
sudo ntpdate -u ntp.aliyun.com

image-20230414193552923

  • -u:使用非特权端口(避免防火墙干扰)。

  • 阿里云 NTP 服务器:ntp.aliyun.com(也可用 pool.ntp.org 等)。

说明

  • ntpd 启动后会定期联网校准系统时间,保持准确。
  • 手动校准命令 ntpdate 常用于一次性同步或脚本中,若与 ntpd 同时使用可能冲突,建议只选一种方式。

注意事项

  • 修改时区或时间相关操作通常需要 root 权限,记得使用 sudo
  • 如果系统未联网,NTP 同步会失败,需先确保网络连接。
  • 日期计算中的 -d 选项支持复杂表达式,如 'next friday''2 weeks ago' 等(GNU 扩展)。
posted @ 2023-04-14 19:41  克峰同学  阅读(105)  评论(0)    收藏  举报