Windows下bat脚本获取时间和Linux下shell命令获取时间

时间:2022-01-10 09:06:09

1、Windows下bat脚本获取时间

(1)windows下DOS窗口date的结果 2016/09/03 周六,我们需要将其进行格式化显示,如:YYYY-MM-DD 就要进行如下操作:

日期截取遵从格式 %date:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)

年份从第0位开始截取4位,月份从第5位开始截取2位,日期从第8位开始截取2位

(2)windows下DOS窗口time的结果 12:05:49.02 我们需要将其进行格式化显示,如:HH:MM:SS就要进行如下操作:

时间截取遵从格式 %time:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)

时钟从第0位开始截取2位,分钟从第3位开始截取2位,秒钟从第6位开始截取2位

详见脚本DateTime.bat

[cpp] view plain copy
  1. :: 脚本创建时最好选择GB2312编码(方式很简单,新建txt文件,输入几个中文字符保存后将后缀.txt改成.bat)  
  2. :: @echo off 表示不回显执行的命令  
  3. @echo off   
  4. @echo =========Windows的原本日期时间格式=======================  
  5. :: 设置变量,使用变量时需要用一对%包起来  
  6. set ORIGINAL_DATE=%date%   
  7. echo %ORIGINAL_DATE%  
  8.   
  9. @echo =========日期按照YYYY-MM-DD格式显示======================  
  10. :: 日期截取遵从格式 %date:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)  
  11. :: windows下DOS窗口date的结果 2016/09/03 周六  
  12. :: 年份从第0位开始截取4位,月份从第5位开始截取2位,日期从第8位开始截取2位  
  13. set CURRENT_DATE=%date:~0,4%-%date:~5,2%-%date:~8,2%   
  14. echo %CURRENT_DATE%  
  15.   
  16. @echo =========时间按照HH:MM:SS格式显示========================  
  17. :: 时间截取遵从格式 %time:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)  
  18. :: windows下DOS窗口time的结果 12:05:49.02   
  19. :: 时钟从第0位开始截取2位,分钟从第3位开始截取2位,秒钟从第6位开始截取2位  
  20. set CURRENT_TIME=%time:~0,2%:%time:~3,2%:%time:~6,2%    
  21. echo %CURRENT_TIME%  
  22.   
  23. @echo =========日期时间按照YYYY-MM-DD HH:MM:SS格式显示=========  
  24. set CURRENT_DATE_TIME=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%:%time:~3,2%:%time:~6,2%    
  25. echo %CURRENT_DATE_TIME%  
  26.   
  27. @echo =========日期时间按照YYYYMMDD_HHMMSS格式显示=============  
  28. set CURRENT_DATE_TIME_STAMP=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%  
  29. echo %CURRENT_DATE_TIME_STAMP%  
  30. @echo =========================================================  

Windows下bat脚本获取时间和Linux下shell命令获取时间

运行结果:

Windows下bat脚本获取时间和Linux下shell命令获取时间


不过最近测试发现一个问题,当时钟小于等于9时,前面有个空格,比较难看,如下图

Windows下bat脚本获取时间和Linux下shell命令获取时间

针对上面的问题做了如下修改:

[cpp] view plain copy
  1. :: 编码格式 GB2312  
  2. :: 脚本创建时最好选择GB2312编码(方式很简单,新建txt文件,输入几个中文字符保存后将后缀.txt改成.bat)  
  3. :: @echo off 表示不回显执行的命令  
  4. @echo off   
  5. @echo =========Windows的原本日期时间格式=======================  
  6. :: 设置变量,使用变量时需要用一对%包起来  
  7. set ORIGINAL_DATE=%date%   
  8. echo %ORIGINAL_DATE%  
  9.   
  10. @echo =========日期按照YYYY-MM-DD格式显示======================  
  11. :: 日期截取遵从格式 %date:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)  
  12. :: windows下DOS窗口date的结果 2016/09/03 周六  
  13. :: 年份从第0位开始截取4位,月份从第5位开始截取2位,日期从第8位开始截取2位  
  14.   
  15. set YEAR=%date:~0,4%  
  16. set MONTH=%date:~5,2%  
  17. set DAY=%date:~8,2%  
  18. set CURRENT_DATE=%YEAR%-%MONTH%-%DAY%  
  19. echo %CURRENT_DATE%  
  20.   
  21. @echo =========时间按照HH:MM:SS格式显示========================  
  22. :: 时间截取遵从格式 %time:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)  
  23. :: windows下DOS窗口time的结果 12:05:49.02   
  24. :: 时钟从第0位开始截取2位,分钟从第3位开始截取2位,秒钟从第6位开始截取2位  
  25.   
  26. set HOUR=%time:~0,2%  
  27. set MINUTE=%time:~3,2%  
  28. set SECOND=%time:~6,2%  
  29.   
  30. :: 当时钟小于等于9时,前面有个空格,这时我们少截取一位,从第1位开始截取  
  31. set TMP_HOUR=%time:~1,1%  
  32. set NINE=9  
  33. set ZERO=0  
  34. :: 处理时钟是个位数的时候前面补上一个0, LEQ表示小于等于  
  35. if %HOUR% LEQ %NINE% set HOUR=%ZERO%%TMP_HOUR%  
  36.   
  37. set CURRENT_TIME=%HOUR%:%MINUTE%:%SECOND%  
  38. echo %CURRENT_TIME%  
  39.   
  40. @echo =========日期时间按照YYYY-MM-DD HH:MM:SS格式显示=========  
  41. set CURRENT_DATE_TIME=%YEAR%-%MONTH%-%DAY% %HOUR%:%MINUTE%:%SECOND%  
  42. echo %CURRENT_DATE_TIME%  
  43.   
  44. @echo =========日期时间按照YYYYMMDD_HHMMSS格式显示=============  
  45. set CURRENT_DATE_TIME_STAMP=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%  
  46. echo %CURRENT_DATE_TIME_STAMP%  
  47. @echo =========================================================  

DateTime.bat

运行效果如下:

Windows下bat脚本获取时间和Linux下shell命令获取时间


提供一个按照时间戳创建文件夹的脚本,这个在文件备份的时候常常用到

CreateDirectoryByTimeStamp.bat

[cpp] view plain copy
  1. :: 编码格式 GB2312  
  2. :: 脚本创建时最好选择GB2312编码(方式很简单,新建txt文件,输入几个中文字符保存后将后缀.txt改成.bat)  
  3. :: @echo off 表示不回显执行的命令  
  4. @echo off   
  5.   
  6. :: 日期截取遵从格式 %date:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)  
  7. :: windows下DOS窗口date的结果 2016/09/03 周六  
  8. :: 年份从第0位开始截取4位,月份从第5位开始截取2位,日期从第8位开始截取2位  
  9. set YEAR=%date:~0,4%  
  10. set MONTH=%date:~5,2%  
  11. set DAY=%date:~8,2%  
  12.   
  13. :: 时间截取遵从格式 %time:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)  
  14. :: windows下DOS窗口time的结果 12:05:49.02   
  15. :: 时钟从第0位开始截取2位,分钟从第3位开始截取2位,秒钟从第6位开始截取2位  
  16. set HOUR=%time:~0,2%  
  17. set MINUTE=%time:~3,2%  
  18. set SECOND=%time:~6,2%  
  19. :: 毫秒  
  20. set MILLISECIOND=%time:~9,2%  
  21.   
  22. :: 当时钟小于等于9时,前面有个空格,这时我们少截取一位,从第1位开始截取  
  23. set TMP_HOUR=%time:~1,1%  
  24. set NINE=9  
  25. set ZERO=0  
  26. :: 处理时钟是个位数的时候前面补上一个0, LEQ表示小于等于  
  27. if %HOUR% LEQ %NINE% set HOUR=%ZERO%%TMP_HOUR%  
  28.   
  29. set CURRENT_DATE_TIME_STAMP=%YEAR%%MONTH%%DAY%%HOUR%%MINUTE%%SECOND%%MILLISECIOND%  
  30. mkdir  %CURRENT_DATE_TIME_STAMP%  


2、Linux下shell脚本获取时间

Linux下shell脚本获取时间就比较简单了,详见脚本DateTime.sh:

[cpp] view plain copy
  1. echo "====================================================="  
  2. echo "show linux original format date and time:"  
  3. echo DateTime: $(date)  
  4. echo "====================================================="  
  5.   
  6. echo "show date time like format: YYYY-MM-DD HH:MM:SS"  
  7. NOW_DATE_TIME=$(date "+%Y-%m-%d %H:%M:%S")  
  8. echo $NOW_DATE_TIME  
  9. echo "====================================================="  
  10.   
  11. echo "show date time like format: YYYYMMDD-HHMMSS"  
  12. NOW_TIME=$(date "+%Y%m%d-%H%M%S")  
  13. echo $NOW_TIME  
  14. echo "====================================================="  
  15.   
  16. echo "show last year:"  
  17. LAST_YEAR=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 years")  
  18. echo $LAST_YEAR  
  19. echo "====================================================="  
  20.   
  21. echo "show next year:"  
  22. NEXT_YEAR=$(date "+%Y-%m-%d %H:%M:%S" --date="1 years")  
  23. echo $NEXT_YEAR  
  24. echo "====================================================="  
  25.   
  26. echo "show last month:"  
  27. LAST_MONTH=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 months")  
  28. echo $LAST_MONTH  
  29. echo "====================================================="  
  30.   
  31. echo "show next month:"  
  32. NEXT_MONTH=$(date "+%Y-%m-%d %H:%M:%S" --date="1 months")  
  33. echo $NEXT_MONTH  
  34. echo "====================================================="  
  35.   
  36. echo "show last day:"  
  37. LAST_DAY=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 days")  
  38. echo $LAST_DAY  
  39. echo "====================================================="  
  40.   
  41. echo "show next day:"  
  42. NEXT_DAY=$(date "+%Y-%m-%d %H:%M:%S" --date="1 days")  
  43. echo $NEXT_DAY  
  44. echo "====================================================="  
  45.   
  46. echo "show last hour:"  
  47. LAST_HOUR=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 hours")  
  48. echo $LAST_HOUR  
  49. echo "====================================================="  
  50.   
  51. echo "show next hour:"  
  52. NEXT_HOUR=$(date "+%Y-%m-%d %H:%M:%S" --date="1 hours")  
  53. echo $NEXT_HOUR  
  54. echo "====================================================="  
  55.   
  56. echo "show last minute:"  
  57. LAST_MINUTE=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 minutes")  
  58. echo $LAST_MINUTE  
  59. echo "====================================================="  
  60.   
  61. echo "show next minute:"  
  62. NEXT_MINUTE=$(date "+%Y-%m-%d %H:%M:%S" --date="1 minutes")  
  63. echo $NEXT_MINUTE  
  64. echo "====================================================="  
  65.   
  66. echo "show last second:"  
  67. LAST_SECOND=$(date "+%Y-%m-%d %H:%M:%S" --date="-1 seconds")  
  68. echo $LAST_SECOND  
  69. echo "====================================================="  
  70.   
  71. echo "show next second:"  
  72. NEXT_SECOND=$(date "+%Y-%m-%d %H:%M:%S" --date="1 seconds")  
  73. echo $NEXT_SECOND  
  74. echo "====================================================="  

DateTime.sh

运行结果:

Windows下bat脚本获取时间和Linux下shell命令获取时间