博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell脚本获取格式化日期与时间
阅读量:6458 次
发布时间:2019-06-23

本文共 2938 字,大约阅读时间需要 9 分钟。

hot3.png

Shell脚本获取格式化日期与时间总结,Linux的bash脚本对时间格式的支持超出了我的预想,支持多种格式的变化与输出。甚至比java的api还要方便,总结如下:

 

1、常用的取日期方法:

 

[plain]

 

  1. #!/bin/sh  
  2. # upload logs to hdfs  
  3.   
  4.   
  5. source /etc/profile  
  6.   
  7.   
  8. #获取昨天日期 yyyyMMdd 格式  
  9. yesterday=`date --date='1 days ago' +%Y%m%d`  
  10. #获取昨天日期 yyyy-MM-dd 格式  
  11. yesterday2=`date --date='1 days ago' +%Y-%m-%d`  
  12.   
  13.   
  14. #获取今天日期 yyyyMMdd 格式  
  15. today=`date --date='0 days ago' +%Y%m%d`  
  16. #获取今天日期 yyyy-MM-dd 格式  
  17. today2=`date --date='0 days ago' +%Y-%m-%d`  
  18.   
  19.   
  20. #获取明天日期 yyyyMMdd 格式  
  21. today=`date --date='1 days' +%Y%m%d`  
  22. #获取明天日期 yyyy-MM-dd 格式  
  23. today2=`date --date='1 days' +%Y-%m-%d`  
  24.   
  25.   
  26. #获取当前时间 yyyy-MM-dd HH:mm:ss 格式  
  27. nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`  
  28. #获取当前日间 HH:mm:ss 格式  
  29. nowtime2=`date --date='0 days ago' +%H:%M:%S`  
  30.   
  31.   
  32. #获取1小时前时间 yyyy-MM-dd HH:mm:ss 格式  
  33. onehourage=`date --date='1 hours ago' "+%Y-%m-%d %H:%M:%S"`  
  34. #获取1小时后时间 yyyy-MM-dd HH:mm:ss 格式  
  35. onehourage2=`date --date='1 hours' "+%Y-%m-%d %H:%M:%S"`  
  36.   
  37.   
  38. #获取2小时前时间 yyyy-MM-dd HH:mm:ss 格式  
  39. twohourage=`date --date='2 hours ago' "+%Y-%m-%d %H:%M:%S"`  
  40. #获取2小时后时间 yyyy-MM-dd HH:mm:ss 格式  
  41. twohourage2=`date --date='2 hours' "+%Y-%m-%d %H:%M:%S"`  
  42.   
  43.   
  44. #获取1个月前时间 yyyy-MM-dd HH:mm:ss 格式  
  45. date --date='1 month ago' "+%Y-%m-%d %H:%M:%S"  
  46. #获取1个月加1天前时间 yyyy-MM-dd HH:mm:ss 格式  
  47. date --date='1 month ago + 1 day ago' "+%Y-%m-%d %H:%M:%S"  
  48. #获取1个月减1天前时间 yyyy-MM-dd HH:mm:ss 格式  
  49. date --date='1 month ago - 1 day ago' "+%Y-%m-%d %H:%M:%S"  
  50.   
  51.   
  52.   
  53. #获取1个月加1天加1小时加1分钟加1秒钟前时间 yyyy-MM-dd HH:mm:ss 格式  
  54. date --date='1 month ago + 1 day ago + 1 hour ago + 1 min ago + 1 sec ago' "+%Y-%m-%d %H:%M:%S"  
  55. #获取1个月加1天减1小时减1分钟减1秒钟前时间 yyyy-MM-dd HH:mm:ss 格式  可以 + - 滥用  
  56. date --date='1 month ago + 1 day ago - 1 hour ago - 1 min ago - 1 sec ago' "+%Y-%m-%d %H:%M:%S"  
  57.   
  58.   
  59. #获取1个月加1天加1小时加1分钟加1秒钟后时间 yyyy-MM-dd HH:mm:ss 格式  
  60. date --date='1 month + 1 day  + 1 hour  + 1 min  + 1 sec ' "+%Y-%m-%d %H:%M:%S"  
  61.   
  62.   
  63. #获取1个月加1天减1小时减1分钟减1秒钟后时间 yyyy-MM-dd HH:mm:ss 格式  
  64. date --date='1 month + 1 day  - 1 hour  - 1 min  - 1 sec ' "+%Y-%m-%d %H:%M:%S"  
  65.   
  66.   
  67. #获取1年后1个月加1天减1小时减1分钟减1秒钟后时间 yyyy-MM-dd HH:mm:ss 格式  
  68. date --date='1 year 1 month + 1 day  - 1 hour  - 1 min  - 1 sec ' "+%Y-%m-%d %H:%M:%S"  
  69.   
  70.   
  71. #获取1年前1个月加1天减1小时减1分钟减1秒钟后时间 yyyy-MM-dd HH:mm:ss 格式  
  72. date --date='1 year 1 month + 1 day  - 1 hour  - 1 min  - 1 sec ' "+%Y-%m-%d %H:%M:%S"  

 

 

2、取月周季度的首尾

  1. #月初:   
  2. m= `date --date='1 month' "+%Y-%m"`-01  
  3. #月末:   
  4. date --date="1 day ago $m" "+%Y-%m-%d"  
  5. #一周前 :   
  6. date --date="1 week ago "  "+%Y-%m-%d"  
  7. #星期:   
  8. date --date="0 days ago" "+%Y-%m-%d %u"  
  9. #季头:    
  10. date -d "`awk -F- '$2%3==1{print $1FS$2FS"01";next}$2%3==2{print $1FS$2-1FS"01";next}{print $1FS$2-2FS"01"}' <<<2014-1-07`" +%F  
  11. #季尾:    
  12. date -d "`awk -F- '$2%3==1{print $1FS$2+3FS"01";next}$2%3==2{print $1FS$2+2FS"01";next}{print $1FS$2+1FS"01"}' <<<2014-1-07` -1 day" +%F  

 

 

3、循环取日期

 

[plain]

 

  1. #! /bin/sh  
  2. today=$2  
  3. enddate=$1  
  4. while [[ $today -ge $enddate  ]]  
  5. do  
  6.         echo ${today}  
  7.   
  8.     today2=`date -d "0 day $today" +%Y-%m-%d`  
  9.       
  10.     echo ${today2}    
  11.     ###  to do this   
  12.   
  13.     today=`date -d "-1 day $today" +%Y%m%d`  
  14.   
  15.   
  16. done  

调用方式:

 

 

[plain]

 

  1. bash testFor.sh  20150507 20160225  

 

 

说明:to do 放需循环调用的代码或者脚本

转载于:https://my.oschina.net/chaoshu/blog/1581913

你可能感兴趣的文章
Android项目——实现时间线程源码
查看>>
招商银行信用卡重要通知:消费提醒服务调整,300元以下消费不再逐笔发送短信...
查看>>
python全栈_002_Python3基础语法
查看>>
C#_delegate - 调用列表
查看>>
交换机二层接口access、trunk、hybird三种模式对VLAN的处理过程
查看>>
jQuery.extend 函数详解
查看>>
[转]Windows的批处理脚本
查看>>
lnmp高人笔记
查看>>
[转载] OpenCV2.4.3 CheatSheet学习(三)
查看>>
C#中跨窗体操作(2)--消息机制
查看>>
子程序框架
查看>>
多维数组元素的地址
查看>>
maven的错误记录
查看>>
数据库运维体系_SZMSD
查看>>
aspose 模板输出
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
selenium多个窗口切换
查看>>
《单页面应用》所获知识点
查看>>
静态库 调试版本 和发布版本
查看>>
DB2 错误码解析
查看>>