在命令行中显示时间是系统管理、脚本开发以及日常运维中常见的操作,不同操作系统(如Windows、Linux、macOS)提供了不同的命令和工具来实现这一功能,本文将详细介绍如何在命令行中显示时间,包括基础命令、格式化输出、时区管理、实时更新以及脚本应用等场景,并通过表格对比常用格式符,帮助读者全面掌握相关技能。

Windows系统下的时间显示命令
Windows系统提供了多种命令行工具来显示时间,包括传统的CMD命令和更强大的PowerShell命令。
time命令
time命令主要用于显示或设置系统当前时间,基本语法为time [HH:MM:SS]。
- 显示当前时间:直接输入
time,命令行会输出当前时间(如14:30:25.12),并提示用户输入新时间(按回车可跳过设置)。
示例输出:当前时间:14:30:25.12 请输入新时间: - 只显示时间不提示输入:使用
time /t选项,仅输出当前时间(如14:30:25),适合脚本中快速调用。
date命令
date命令用于显示或设置系统当前日期,也可结合时间显示。
- 显示当前日期和时间:直接输入
date,输出格式为“星期 月 日 时:分:秒 年”(如2023年10月01日 星期日 14:30:25.12)。 - 只显示日期或时间:
date /t仅显示日期(如2023/10/01),time /t仅显示时间(如14:30:25)。 - 格式化输出:CMD本身对
date的格式化支持较弱,但可通过变量提取部分信息。%date%变量输出当前日期(如2023/10/01),%time%变量输出当前时间(如14:30:25.12),可通过组合字符串自定义格式,如echo 当前时间:%time:~0,8%(输出“当前时间:14:30:25”)。
PowerShell命令(推荐)
PowerShell提供了更灵活的时间处理能力,核心命令是Get-Date。
- 显示默认格式时间:直接输入
Get-Date,输出格式为“星期 月 日 时:分:秒 年”(如2023年10月1日 14:30:25 星期日)。 - 自定义格式化输出:通过
-Format参数指定格式,Get-Date -Format "yyyy-MM-dd HH:mm:ss" # 输出"2023-10-01 14:30:25" Get-Date -Format "yy/MM/dd hh:mm:ss tt" # 输出"23/10/01 02:30:25 PM"(12小时制+AM/PM)
yyyy为四位年份,MM为两位月份,dd为两位日期,HH为24小时制小时,hh为12小时制小时,mm为分钟,ss为秒,tt为AM/PM标识。
Linux/macOS系统下的时间显示命令
Linux和macOS系统基于Unix-like内核,时间显示命令高度相似,核心是date命令,辅以timedatectl、hwclock等工具。
date命令(核心工具)
date是Linux/macOS中最常用的时间显示命令,支持丰富的格式化选项。
-
显示默认格式时间:直接输入
date,输出格式为“星期 月 日 时:分:秒 时区 年”(如Sun Oct 1 14:30:25 CST 2023)。 -
自定义格式化输出:通过加格式字符串实现,

date +"%Y-%m-%d %H:%M:%S" # 输出"2023-10-01 14:30:25" date +"%y/%m/%d %I:%M:%S %p" # 输出"23/10/01 02:30:25 PM"(12小时制+AM/PM) date +"%A, %B %d, %Y" # 输出"Sunday, October 01, 2023"(星期+月份+日期+年份)
常用格式符包括:
%Y(四位年份)、%y(两位年份)、%m(两位月份)、%d(两位日期)、%H(24小时制小时)、%I(12小时制小时)、%M(分钟)、%S(秒)、%A(星期全称)、%a(星期简称)、%B(月份全称)、%b(月份简称)、%p(AM/PM)、%Z(时区)。 -
显示UTC时间:使用
-u或--utc选项,例如date -u +"%Y-%m-%d %H:%M:%S"输出UTC时间(如2023-10-01 06:30:25)。 -
处理时间字符串:通过
-d或--date参数解析时间字符串,date -d "2023-10-01 12:00:00" +"%Y-%m-%d %H:%M:%S" # 输出指定时间 date -d "1 day ago" +"%Y-%m-%d" # 输出"2023-09-30"(1天前) date -d "next monday" +"%Y-%m-%d" # 输出下周一的日期
timedatectl命令(系统时间管理)
timedatectl是systemd系统工具,用于管理系统时间和时区,需root权限。
- 查看时间状态:
timedatectl status,输出包括本地时间、UTC时间、时区、是否同步时间服务器等信息。 - 设置时区:
timedatectl set-timezone "时区名",例如timedatectl set-timezone "Asia/Shanghai"设置为东八区。 - 列出所有时区:
timedatectl list-timezones | grep "Asia"(过滤出亚洲时区)。
hwclock命令(硬件时钟管理)
hwclock用于查看或设置硬件时钟(BIOS/UEFI时间),与系统时间独立。
- 显示硬件时间:
hwclock或hwclock --show,输出格式为2023-10-01 14:30:25.123848+08:00(包含时区)。 - 同步系统时间到硬件时钟:
hwclock --systohc(修改后需同步,避免重启后时间错误)。
watch命令(实时更新时间)
watch命令可定期执行命令并全屏显示,适合实时监控时间变化。
- 每秒更新时间:
watch -n 1 date,-n 1表示每秒刷新一次,按Ctrl+C退出。
时间格式化符对比(表格)
为方便不同系统用户快速查找格式符,以下表格对比Linux/macOS和Windows(PowerShell)常用时间格式符:
| 功能 | Linux/macOS date格式符 |
Windows PowerShell Get-Date格式符 |
说明 |
|---|---|---|---|
| 四位年份 | %Y | yyyy | 例如2023 |
| 两位年份 | %y | yy | 例如23 |
| 两位月份 | %m | MM | 例如01(1月) |
| 两位日期 | %d | dd | 例如01(1日) |
| 24小时制小时 | %H | HH | 例如14(下午2点) |
| 12小时制小时 | %I | hh | 例如02(下午2点) |
| 分钟 | %M | mm | 例如30 |
| 秒 | %S | ss | 例如25 |
| 星期全称 | %A | dddd | 例如Sunday |
| 星期简称 | %a | ddd | 例如Sun |
| 月份全称 | %B | MMMM | 例如October |
| 月份简称 | %b | MMM | 例如Oct |
| AM/PM标识 | %p | tt | 例如PM |
| 时区 | %Z | zz | 例如CST |
| 短格式(年-月-日) | %F | yyyy-MM-dd | 例如2023-10-01 |
| 短格式(时:分:秒) | %T | HH:mm:ss | 例如14:30:25 |
时区管理
时区是时间显示的重要组成部分,不同系统设置时区的命令不同。
Linux/macOS
- 查看当前时区:
timedatectl status或date +"%Z"。 - 设置时区:
- 列出所有时区:
timedatectl list-timezones。 - 设置目标时区:
timedatectl set-timezone "Asia/Shanghai"(需root权限)。
- 列出所有时区:
Windows
- 查看当前时区:
tzutil /g(CMD)或(Get-TimeZone).Name(PowerShell)。 - 设置时区:
tzutil /s "时区名",例如tzutil /s "China Standard Time"(时区名可通过tzutil /l列出)。
定时任务与时间显示结合
在脚本或自动化任务中,常需要结合时间执行操作,例如记录日志、定时备份等。

Linux/macOS(cron任务)
使用crontab -e编辑定时任务,
# 每小时整点记录时间到日志文件 0 * * * * date +"%Y-%m-%d %H:%M:%S" >> /var/log/hourly_time.log
0 * * * *表示每小时的0分钟执行,date +"..."生成时间字符串,>>追加到日志文件。
Windows(任务计划程序)
- 打开“任务计划程序”(taskschd.msc),创建基本任务。
- 设置触发器(如“每天”特定时间)。
- 设置操作为“启动程序”,程序路径为
cmd.exe,参数为/c "echo %date% %time% >> C:time.log"。
脚本中获取时间变量
在脚本中动态获取时间变量是实现自动化操作的关键。
Shell脚本(Linux/macOS)
#!/bin/bash current_time=$(date +"%Y-%m-%d %H:%M:%S") log_file="/var/script.log" echo "脚本执行时间:$current_time" >> "$log_file"
PowerShell脚本(Windows)
$current_time = Get-Date -Format "yyyy-MM-dd HH:mm:ss" $log_file = "C:script.log" "脚本执行时间:$current_time" | Out-File -FilePath $log_file -Append
命令行显示时间的核心在于掌握date(Linux/macOS)和Get-Date(Windows)命令的格式化选项,结合时区管理和定时任务工具,可满足时间显示、记录、自动化等需求,不同系统命令虽有差异,但逻辑相似,通过本文的对比和示例,用户可根据实际环境选择合适的方法高效操作。
FAQs
问题1:如何在Linux命令行中让时间每秒自动更新并显示?
解答:使用watch命令结合date,例如watch -n 1 date,其中-n 1表示每秒刷新一次,执行后,命令行会全屏显示当前时间,并每秒自动更新,按Ctrl+C可退出实时显示模式。
问题2:如何在Windows命令行中修改时间显示的格式,使其显示为“年-月-日 时:分:秒”且24小时制?
解答:推荐使用PowerShell的Get-Date命令,例如Get-Date -Format "yyyy-MM-dd HH:mm:ss",其中yyyy为四位年份,MM为两位月份,dd为两位日期,HH为24小时制小时,mm为分钟,ss为秒,若需在CMD中实现类似效果,可通过变量组合,如for /f "tokens=1-6 delims=/ " %a in ('date /t') do echo %c-%a-%b %d:%e:%f(但格式灵活性不如PowerShell)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/14792.html