Linux中date命令查看与格式化当前时间的方法

12 次阅读

Linux系统中经常需要查看当前时间、生成指定格式的时间字符串、进行日期计算或在脚本中记录日志。date命令作为Linux环境下最常用的时间处理工具之一,功能十分强大,不仅可以显示系统当前时间,还支持自定义输出格式、时间转换、时间偏移计算等操作。

掌握Linux中的date命令,对于系统管理、Shell脚本开发、日志分析以及自动化任务编写都有重要作用。

一、Linux date命令基本介绍

date是Linux系统自带的日期时间管理命令,用于显示或设置系统日期和时间。

基本语法如下:

Bash
date [选项] [+格式化字符串]

最简单的使用方式:

Bash
date

执行后会输出当前系统时间,例如:

Sat Oct  4 08:42:10 CST 2026

默认显示内容通常包括:

  • 星期

  • 月份

  • 日期

  • 时间

  • 时区

  • 年份

例如:

Sat Oct 4 08:42:10 CST 2026

表示:

  • Sat:星期六

  • Oct:10月

  • 4:日期

  • 08:42:10:当前时间

  • CST:中国标准时间

  • 2026:年份

二、使用date查看指定格式的当前时间

Linux中date命令最大的特点是支持格式化输出,通过+格式字符串可以控制时间显示方式。

例如:

Bash
date "+%Y-%m-%d %H:%M:%S"

输出:

2026-10-04 08:42:10

这种格式非常常用于:

  • 日志文件命名

  • 数据备份脚本

  • 程序运行记录

  • 自动化任务

三、date常用时间格式参数详解

Linux date格式化主要通过百分号开头的参数实现。

常见参数如下:

参数含义示例
%Y四位年份2026
%y两位年份26
%m月份10
%d日期04
%H小时(24小时制)08
%I小时(12小时制)08
%M分钟42
%S秒10
%a星期简称Sat
%A星期全称Saturday
%b月份简称Oct
%B月份全称October
%sUnix时间戳1791074530
%F完整日期格式2026-10-04
%T时间格式08:42:10

其中:

Bash
%F

等价于:

Bash
%Y-%m-%d

而:

Bash
%T

等价于:

Bash
%H:%M:%S

四、常见date格式化示例

1. 查看年月日

Bash
date "+%Y-%m-%d"

结果:

2026-10-04

2. 查看完整日期时间

Bash
date "+%Y-%m-%d %H:%M:%S"

结果:

2026-10-04 08:42:10

3. 查看当前时间戳

Unix时间戳表示从1970年1月1日00:00:00 UTC开始计算的秒数。

执行:

Bash
date "+%s"

输出:

1791074530

4. 查看星期信息

Bash
date "+%A"

输出:

Saturday

5. 自定义日志时间格式

例如:

Bash
date "+[%Y-%m-%d %H:%M:%S]"

输出:

[2026-10-04 08:42:10]

常用于Shell脚本:

Bash
echo "$(date '+%Y-%m-%d %H:%M:%S') backup completed"

输出:

2026-10-04 08:42:10 backup completed

五、date获取昨天、明天等时间

Linux date支持时间偏移计算,可以快速获取相对日期。

获取昨天日期

Bash
date -d "yesterday" "+%Y-%m-%d"

输出:

2026-10-03

获取明天日期

Bash
date -d "tomorrow" "+%Y-%m-%d"

输出:

2026-10-05

获取指定天数之前的日期

例如获取7天前:

Bash
date -d "7 days ago" "+%Y-%m-%d"

结果:

2026-09-27

获取未来30天日期

Bash
date -d "+30 days" "+%Y-%m-%d"

结果:

2026-11-03

六、date处理指定日期

除了查看当前时间,date还可以解析指定日期。

例如:

Bash
date -d "2026-01-01"

输出:

Thu Jan  1 00:00:00 CST 2026

格式化输出:

Bash
date -d "2026-01-01" "+%Y-%m-%d %A"

结果:

2026-01-01 Thursday

七、时间戳与日期互相转换

在开发和运维环境中,经常需要时间戳和普通日期之间转换。

时间转Unix时间戳

Bash
date "+%s"

例如:

1791074530

Unix时间戳转换日期

使用:

Bash
date -d "@1791074530"

输出:

Sat Oct 4 08:42:10 CST 2026

指定格式:

Bash
date -d "@1791074530" "+%Y-%m-%d %H:%M:%S"

输出:

2026-10-04 08:42:10

八、date命令在Shell脚本中的应用

1. 生成备份文件名

例如每天生成带日期的备份文件:

Bash
#!/bin/bash

backup="database_$(date '+%Y%m%d').sql"

echo $backup

输出:

database_20261004.sql

2. 计算脚本执行耗时

记录开始时间:

Bash
start=$(date +%s)

执行任务:

Bash
sleep 5

结束时间:

Bash
end=$(date +%s)

计算:

Bash
echo "耗时:$((end-start))秒"

输出:

耗时:5秒

3. 自动生成日志文件

例如:

Bash
log="app_$(date '+%Y%m%d_%H%M%S').log"

生成:

app_20261004_084210.log

适合程序运行日志、定时任务日志管理。

九、date设置系统时间

除了查看时间,date也可以修改系统时间。

例如:

Bash
date -s "2026-10-04 09:00:00"

执行后系统时间会被调整。

不过在生产环境中修改系统时间需要谨慎,因为可能影响:

  • 数据库时间记录

  • 日志排序

  • 定时任务执行

  • 集群时间同步

现代Linux服务器通常使用:

  • NTP

  • chrony

  • systemd-timesyncd

进行自动时间同步。

十、Linux date与timedatectl配合使用

在较新的Linux发行版中,可以使用timedatectl查看时间同步状态。

执行:

Bash
timedatectl

示例:

Local time: Sat 2026-10-04 08:42:10 CST
Universal time: Sat 2026-10-04 00:42:10 UTC
Time zone: Asia/Shanghai
System clock synchronized: yes

如果发现date显示时间异常,可以优先检查:

Bash
timedatectl status

确认:

  • 时区是否正确

  • 时间同步是否开启

  • 系统时间是否准确

十一、date命令常见问题

1. date显示时间与实际不一致

可能原因:

  • 系统时区错误

  • NTP同步异常

  • 虚拟机时间漂移

检查时区:

Bash
timedatectl

修改时区:

Bash
timedatectl set-timezone Asia/Shanghai

2. date -d参数无法使用

部分系统中的date版本不同。

例如:

GNU Linux:

Bash
date -d "tomorrow"

支持。

但macOS默认date不支持-d参数,需要使用:

Bash
date -v+1d

因此编写跨平台脚本时需要注意系统差异。

3. Shell中变量引用问题

错误:

Bash
date +%Y-%m-%d

在某些场景中可能被Shell解析。

推荐:

Bash
date "+%Y-%m-%d"

或者:

Bash
date '+%Y-%m-%d'

避免特殊字符产生影响。

十二、Linux date命令使用技巧总结

日常Linux运维和开发中,以下命令使用频率较高:

查看当前时间:

Bash
date

标准日期时间:

Bash
date "+%F %T"

生成时间戳:

Bash
date +%s

查看昨天:

Bash
date -d yesterday

查看指定日期:

Bash
date -d "2026-01-01"

生成备份时间:

Bash
date "+%Y%m%d_%H%M%S"

Linux中的date命令虽然简单,但在服务器管理、自动化脚本、日志分析和程序开发中具有非常重要的作用。熟练掌握格式化参数、时间计算以及时间戳转换方法,可以显著提高Linux环境下的工作效率。