找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30486|回复: 5

[日期时间] [已解决]cmd下如何输出统一格式的日期时间

[复制链接]
发表于 2018-1-11 09:44:52 | 显示全部楼层 |阅读模式
本帖最后由 habulu 于 2018-1-19 12:55 编辑

cmd下如何输出当前时间
经常会碰到服务器时间格式不是常规的那种格式,比如(2018年1月11日可能是这种输出):
C:\Users\Administrator>echo %date%
01\11\18 周四

C:\Users\Administrator>echo %time%
9:36:45.50


一般服务器上面也不敢随便去改默认的输出格式,那么有没什么不管原先的默认格式怎么样,统一输出成这种(2018-01-11 09:36:45),网上的那些方式一般不管用:
C:\Users\Administrator>echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%
01\1-\1- 周  9:43:46

完全是乱的
发表于 2018-1-14 07:38:02 | 显示全部楼层
例行推荐使用别的语言。就不用浪费纠结这种问题了。同时收益应该也更加大。
nim语言的时间格式例子:

  1. import times
  2. echo getTime().getLocalTime.format("yyyy-MM-dd HH:mm:ss")
  3. echo getDateStr() & "- -" & getClockStr()
  4. #输出:
  5. #2018-01-14 07:36:18
  6. #2018-01-14- -07:36:18
复制代码
这个github项目的作者想做一个各种语言版的日历,在这里收集了各种语言的日期格式化的代码;
https://github.com/Sneezry/hacking-date
发表于 2018-1-14 13:14:00 | 显示全部楼层
有些时候BAT不方便,尤其是字符串处理,推荐用别的语言是对的建议。
但是,LZ的这个需求犯不着用其他语言,用BAT能混用的且系统自带的js就行了。

cscript //nologo gettime.js
  1. var time = new Date();
  2. WScript.echo(time);
  3. WScript.echo(getYMDHmS(time));

  4. function getYMDHmS(dt){
  5.   var s = dt.getFullYear() + '-' + fillZero(dt.getMonth() + 1) + '-' + dt.getDate();
  6.   s += ' ' + fillZero(dt.getHours()) + ':' + fillZero(dt.getMinutes()) + ':' + fillZero(dt.getSeconds());
  7.   return s;
  8. }

  9. function fillZero(str) { return ('00' + str).slice(-2);}
复制代码
发表于 2018-1-14 18:49:09 | 显示全部楼层
  1. :1
  2. call:GetDateTime
  3. echo,%#GetDate#% %#GetTime#%
  4. goto:1
  5. pause
  6. goto:eof
  7. :GetDateTime
  8. call:GetDate
  9. call:GetTime
  10. goto:eof
  11. :GetDate
  12. for /f "tokens=1,* delims=:" %%c in ('chcp')do for /f %%c in ("%%d")do set "#chcp#=%%c"&&chcp 437
  13. set "#GetDate#="&&for /f "tokens=*" %%i in ('"echo,|date"')do (for %%j in (%%i)do set "#GetDate#=%%j")&&call set "#GetDate#=%%#GetDate#:/=-%%"&&chcp %#chcp#%&goto:eof
  14. goto:eof
  15. :GetTime
  16. for /f "tokens=1,* delims=:" %%c in ('chcp')do for /f %%c in ("%%d")do set "#chcp#=%%c"&&chcp 437
  17. set "#GetTime#="&&for /f "tokens=*" %%i in ('"echo,|Time"')do (for %%j in (%%i)do set "#GetTime#=0000000%%j")&&call set "#Gettime#=%%#GetTime#:~-11%%"&&chcp %#chcp#%&goto:eof
  18. goto:eof
复制代码
发表于 2018-1-15 20:20:14 | 显示全部楼层
发表于 2018-2-22 23:43:40 | 显示全部楼层
本帖最后由 idean 于 2018-2-22 23:48 编辑

以前也纠结这个问题,后来也想到一种很简单的方法,用批出处理的嵌套就可以实现。批处理其实还是很强大的,有人还实现了面向对象,就是效率差了一点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 03:28 , Processed in 0.017962 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表