传统 CMD (命令提示符) 中的日期命令
在 CMD 中,与日期相关的命令主要是 date 和 time。

date 命令
date 命令用于显示和设置系统的当前日期。
基本用法:
-
显示当前日期: 直接在命令行输入
date并按回车。C:\Users\YourUser> date 当前的日期: 2025/10/27 星期五 输入新的日期 (YYYY-MM-DD): _系统会显示当前日期,并提示你输入新日期(如果你有管理员权限且想修改的话)。
(图片来源网络,侵删) -
仅获取日期信息(不显示提示): 如果你想在脚本中只获取日期,而不想看到“输入新日期”的提示,可以使用
/T开关。C:\Users\YourUser> date /T 2025/10/27 星期五这在批处理脚本中非常有用。
-
设置系统日期: 只有以 管理员身份 运行 CMD 才能修改系统日期。
date 2025-10-27系统会确认日期是否已更改。
(图片来源网络,侵删)
time 命令
time 命令用于显示和设置系统的当前时间,用法与 date 类似。
-
显示当前时间:
C:\Users\YourUser> time 当前的时间: 14:35:26.45 输入新的时间: _ -
仅获取时间信息(不显示提示):
C:\Users\YourUser> time /T 14:35:26
在批处理脚本中获取日期和时间
在 CMD 的批处理脚本 (.bat) 中,获取格式化的日期和时间通常需要一些技巧,因为 %DATE% 和 %TIME% 环境变量的格式会因 Windows 的区域设置而不同。
示例:创建一个带有时间戳的日志文件
这是一个非常常见的用法,我们可以使用 for /f 命令来格式化日期和时间,使其更稳定、更符合文件名规范。
@echo off
:: 使用 for /f 命令来获取并格式化日期和时间
:: 格式为: YYYY-MM-DD_HH-MM
for /f "tokens=1-4 delims=/ " %%a in ('date /t') do set my_date=%%c-%%a-%%b
for /f "tokens=1-4 delims=:." %%a in ('time /t') do set my_time=%%a-%%b
:: 组合日期和时间,并替换可能存在的空格
set my_timestamp=%my_date%_%my_time: =0%
:: 创建一个带有时间戳的日志文件
echo 日志记录于 %my_timestamp% > "log_%my_timestamp%.txt"
echo 日志文件已创建: log_%my_timestamp%.txt
pause
代码解释:
for /f "tokens=1-4 delims=/ " ...: 这行命令会解析date /t的输出(2025/10/27 星期五)。tokens=1-4: 提取前4个部分。delims=/: 使用 和空格作为分隔符。%%a,%%b,%%c: 分别对应年、月、日。set my_date=%%c-%%a-%%b: 将它们重新组合为YYYY-MM-DD的格式。
- 第二个
for /f命令对time /t(14:35) 做了类似的处理,得到HH-MM。 - 最后将两者组合,并创建文件。
现代 PowerShell 中的日期命令
PowerShell 提供了更强大、更灵活的日期处理能力,主要通过 Get-Date cmdlet 实现。
Get-Date 命令
Get-Date 是获取当前日期和时间的核心命令。
基本用法:
-
显示完整的日期和时间:
PS C:\Users\YourUser> Get-Date 2025年10月27日 14:35:26默认格式会根据你的系统区域设置而变化。
-
仅获取日期: 使用
-DisplayHint参数。PS C:\Users\YourUser> Get-Date -DisplayHint Date 2025年10月27日 00:00:00虽然显示了时间,但
Date提示表明只关心日期部分。 -
仅获取时间: 同样使用
-DisplayHint参数。PS C:\Users\YourUser> Get-Date -DisplayHint Time 1900年1月1日 14:35:26Time提示表明只关心时间部分。
格式化日期输出
PowerShell 在格式化日期方面非常强大,使用 -Format 或 UFormat 参数。
-
使用
-Format(基于 .NET 格式化字符串): 这是最常用的方法,可以轻松生成文件名友好的格式。PS C:\Users\YourUser> Get-Date -Format "yyyy-MM-dd_HH-mm" 2025-10-27_14-35常见格式代码:
yyyy: 四位数年份 (2025)MM: 两位数月份 (10)dd: 两位数日期 (27)HH: 24小时制的小时 (14)mm: 分钟 (35)ss: 秒 (26)ddd: 星期几的缩写 (周五)dddd: 星期几的全称 (星期五)
-
使用
UFormat(基于 UNIXdate命令的格式):PS C:\Users\YourUser> Get-Date -UFormat "%Y-%m-%d_%H-%M" 2025-10-27_14-35
在 PowerShell 脚本中获取日期和时间
在 PowerShell 中,获取格式化的日期非常简单直观。
示例:创建一个带有时间戳的日志文件
# 使用 Get-Date 获取格式化的时间戳 $timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss" # 定义文件名 $logFileName = "log_$timestamp.txt" 写入日志文件 "日志记录于 $timestamp" | Out-File -FilePath $logFileName Write-Host "日志文件已创建: $logFileName"
代码解释:
$timestamp = Get-Date -Format "...": 直接将格式化后的日期时间字符串赋值给变量。| Out-File ...: 这是 PowerShell 的标准管道操作,将前面的字符串输出到指定的文件中,非常方便。
总结与对比
| 功能 | CMD (批处理) | PowerShell |
|---|---|---|
| 获取日期 | date /T |
Get-Date -DisplayHint Date 或 Get-Date -Format "d" |
| 获取时间 | time /T |
Get-Date -DisplayHint Time 或 Get-Date -Format "t" |
| 获取日期时间 | date /T + time /T (需组合) |
Get-Date |
| 格式化输出 | 复杂,需用 for /f 解析 |
简单,Get-Date -Format "自定义格式" |
| 创建时间戳文件 | 代码冗长,易出错 | 代码简洁,功能强大 |
| 推荐场景 | 简单的、一次性的命令;旧的系统维护脚本 | 复杂的脚本、自动化任务、现代开发环境 |
对于任何新的脚本或自动化任务,强烈推荐使用 PowerShell,它的 Get-Date 命令在易用性和功能性上都远超 CMD 的 date 命令,只有在维护旧的批处理脚本或在不支持 PowerShell 的极旧环境中,才需要使用 CMD 的方法。
