在 Windows cmd 中打印日期时间

在 Windows cmd 中打印日期时间

在 Linux 中,我date +"%Y%m%d%H%M%S"可以打印日期和时间标签。如何在 Windows 中实现相同的效果?

我发现date /t返回25/02/2016。但我希望将其格式化为如下格式20160225155958

答案1

这是可以做到的,但是并不那么整洁:

echo %date:~-4%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%%time:~6,2%

这对我来说返回:

在此处输入图片描述

请注意,这是特定于语言环境的,实际上它有点像 hack。它只是以下代码的串联:

  • DATE 的最后 4 个字符
  • 日期中间,从第 3 个字符开始的 2 个字符
  • 日期中间,从字符 0 开始的 2 个字符
  • 时间中间,从字符 0 开始的 2 个字符
  • 时间中间,从第 3 个字符开始的 2 个字符
  • 时间中间,从第 6 个字符开始的 2 个字符

答案2

我希望它的格式像 20160225155958

运行后的输出格式如下:

date +"%Y%m%d%H%M%S"

在 Linux 上。

正如另一个答案所指出的那样,使用%date%提供解决方案取决于操作系统的区域设置、区域和语言设置。

wmic另一方面,使用与操作系统区域设置、语言或用户选择的日期格式(控制面板/区域)无关。

以下批处理文件用于wmic以 OP 指定的格式检索日期和(本地)时间,因此不会遭受使用 的解决方案的缺点%date%

获取日期.cmd:

@echo off
setlocal
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1-6" %%g in (`wmic Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year ^| findstr /r /v "^$"`) do (
  set _day=00%%g
  set _hours=00%%h
  set _minutes=00%%i
  set _month=00%%j
  set _seconds=00%%k
  set _year=%%l
  )
rem pad with leading zeros
set _month=%_month:~-2%
set _day=%_day:~-2%
set _hh=%_hours:~-2%
set _mm=%_minutes:~-2%
set _ss=%_seconds:~-2%
set _date=%_year%%_month%%_day%%_hh%%_mm%%_ss%
echo %_date%
endlocal

上述批处理文件是获取日期

输出

F:\test>date /t && time /t
25/02/2016
16:49

F:\test>getdate
20160225164929
F:\test>

Cywin 比较

DavidPostill@Hal /f/test
$ date +"%Y%m%d%H%M%S"
20160225164938

进一步阅读

  • Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
  • 对于/f- 循环命令以执行另一个命令的结果。
  • 获取日期- 显示独立于操作系统区域设置、语言或用户选择的日期格式(控制面板/区域)的日期和时间。
  • 变量- 提取变量的一部分(子字符串)。
  • 西米克- Windows 管理规范命令。

相关内容