[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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

完全是乱的

例行推荐使用别的语言。就不用浪费纠结这种问题了。同时收益应该也更加大。
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
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

有些时候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);}
复制代码

TOP

  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
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 idean 于 2018-2-22 23:48 编辑

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

TOP

返回列表