Linux系统中,时间格式的修改主要涉及系统locale配置、date
命令格式化输出以及时区设置等多个方面,不同场景下修改方法略有差异,本文将详细说明各类操作步骤及注意事项。
Linux的时间显示格式由系统locale中的LC_TIME
变量控制,该变量定义了日期、时间的显示方式(如“年-月-日”还是“月/日/年”、时间是否包含12/24小时制等)。date
命令可通过参数临时自定义输出格式,而时区设置也会影响时间显示的数值部分。
通过date
命令临时修改时间格式
date
命令是Linux中最常用的日期时间工具,可通过后跟格式符临时自定义输出格式,仅对当前命令会话有效,退出后恢复默认。
常用格式符说明
格式符 | 含义 | 示例输出(2023-10-01 14:30:45) |
---|---|---|
%Y | 4位年份 | 2023 |
%m | 2位月份(01-12) | 10 |
%d | 2位日期(01-31) | 01 |
%H | 24小时制小时(00-23) | 14 |
%M | 分钟(00-59) | 30 |
%S | 秒(00-60) | 45 |
%F | 完整日期(%Y-%m-%d) | 2023-10-01 |
%T | 完整时间(%H:%M:%S) | 14:30:45 |
%A | 星期全称 | Sunday |
%B | 月份全称 | October |
操作示例
-
显示默认格式时间
date # 输出示例:Sun Oct 1 14:30:45 CST 2023(取决于系统locale)
-
自定义格式为“年-月-日 时:分:秒”
date "+%Y-%m-%d %H:%M:%S" # 输出:2023-10-01 14:30:45
-
包含星期和月份全称
date "+%Y年%m月%d日 %A %B" # 输出:2023年10月01日 Sunday October
-
12小时制显示(带AM/PM)
date "+%I:%M:%S %p" # 输出:02:30:45 PM
永久修改系统时间格式(locale配置)
若需永久修改系统时间格式,需修改locale配置文件,影响所有用户及服务,操作前建议备份原配置文件,不同Linux发行版配置文件位置略有差异。
查看当前locale设置
locale # 重点查看LC_TIME行,如:LC_TIME="zh_CN.UTF-8"
修改系统级locale配置
-
CentOS/RHEL 7+:修改
/etc/locale.conf
sudo vim /etc/locale.conf # 添加或修改:LC_TIME="en_DK.UTF-8"(en_DK使用“日-月-年”格式) # 或自定义:LC_TIME="zh_CN.UTF-8 %Y-%m-%d"(需系统支持)
修改后执行
source /etc/locale.conf
生效,或重启系统。 -
Ubuntu/Debian:修改
/etc/default/locale
sudo vim /etc/default/locale # 添加或修改:LC_TIME="en_US.UTF-8"(美式格式“月/日/年”)
执行
source /etc/default/locale
后重启会话或系统。
安装新的locale(若系统未预装)
若需修改的locale(如en_DK
)未安装,需先生成:
# Ubuntu/Debian sudo locale-gen en_DK.UTF-8 sudo update-locale LC_TIME=en_DK.UTF-8 # CentOS/RHEL sudo localedef -c -i en_DK -f UTF-8 en_DK.UTF-8 echo "LC_TIME=en_DK.UTF-8" | sudo tee -a /etc/locale.conf
用户级时间格式修改
仅影响当前用户,无需root权限,修改用户家目录下的~/.pam_environment
或~/.bashrc
(仅对bash有效)。
方法1:修改~/.pam_environment
(推荐,所有shell生效)
echo "LC_TIME=en_DK.UTF-8" >> ~/.pam_environment # 退出当前会话后重新登录生效
方法2:修改~/.bashrc
echo "export LC_TIME=en_US.UTF-8" >> ~/.bashrc source ~/.bashrc # 立即生效
时区对时间显示的影响
时间格式的“数值部分”受时区影响,需确保系统时区正确,修改时区不会改变格式,但会调整时间数值:
# 查看当前时区 timedatectl status # 修改时区(如亚洲/上海) sudo timedatectl set-timezone Asia/Shanghai
FAQs
Q1:修改/etc/locale.conf
后时间格式未生效,怎么办?
A:可能是配置未正确加载,尝试执行source /etc/locale.conf
或重启系统;若仍无效,检查文件权限(应为644)及locale -a
确认目标locale是否已安装(如locale -a | grep en_DK
)。
Q2:如何恢复默认的时间格式?
A:恢复系统默认locale即可:
- CentOS/RHEL:备份原
/etc/locale.conf
,删除LC_TIME
行或恢复为初始值(如LC_TIME="zh_CN.UTF-8"
),执行source /etc/locale.conf
。 - Ubuntu:删除
/etc/default/locale
中的LC_TIME
行,或执行sudo dpkg-reconfigure locales
重新选择默认locale,重启系统。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/29060.html