菜鸟科技网

Windows命令中如何精准获取当前日期并格式化输出?

传统 CMD (命令提示符) 中的日期命令

在 CMD 中,与日期相关的命令主要是 datetime

Windows命令中如何精准获取当前日期并格式化输出?-图1
(图片来源网络,侵删)

date 命令

date 命令用于显示和设置系统的当前日期。

基本用法:

  • 显示当前日期: 直接在命令行输入 date 并按回车。

    C:\Users\YourUser> date
    当前的日期: 2025/10/27 星期五
    输入新的日期 (YYYY-MM-DD): _

    系统会显示当前日期,并提示你输入新日期(如果你有管理员权限且想修改的话)。

    Windows命令中如何精准获取当前日期并格式化输出?-图2
    (图片来源网络,侵删)
  • 仅获取日期信息(不显示提示): 如果你想在脚本中只获取日期,而不想看到“输入新日期”的提示,可以使用 /T 开关。

    C:\Users\YourUser> date /T
    2025/10/27 星期五

    这在批处理脚本中非常有用。

  • 设置系统日期: 只有以 管理员身份 运行 CMD 才能修改系统日期。

    date 2025-10-27

    系统会确认日期是否已更改。

    Windows命令中如何精准获取当前日期并格式化输出?-图3
    (图片来源网络,侵删)

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:26

    Time 提示表明只关心时间部分。

格式化日期输出

PowerShell 在格式化日期方面非常强大,使用 -FormatUFormat 参数。

  • 使用 -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 (基于 UNIX date 命令的格式):

    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 DateGet-Date -Format "d"
获取时间 time /T Get-Date -DisplayHint TimeGet-Date -Format "t"
获取日期时间 date /T + time /T (需组合) Get-Date
格式化输出 复杂,需用 for /f 解析 简单,Get-Date -Format "自定义格式"
创建时间戳文件 代码冗长,易出错 代码简洁,功能强大
推荐场景 简单的、一次性的命令;旧的系统维护脚本 复杂的脚本、自动化任务、现代开发环境

对于任何新的脚本或自动化任务,强烈推荐使用 PowerShell,它的 Get-Date 命令在易用性和功能性上都远超 CMD 的 date 命令,只有在维护旧的批处理脚本或在不支持 PowerShell 的极旧环境中,才需要使用 CMD 的方法。

分享:
扫描分享到社交APP
上一篇
下一篇