shell date 获取昨天日期及几种特殊格式

第一种 使用date -d 选项
date +"%Y%m%d" -d "+n days" 今天的后n天日期
date +"%Y%m%d" -d "-n days" 今天的前n天日期
  • 自己写函数
[python] view plain copy
  1. #!/bin/ksh
  2. #获取昨天的日期
  3. lastday()
  4. {
  5. Today=`date+%Y%m%d`
  6. YEAR=`echo$Today|cut-c1-4`
  7. MONTH=`echo$Today|cut-c5-6`
  8. DAY=`echo$Today|cut-c7-8`
  9. if[$DAY-eq1]
  10. then
  11. if[$MONTH-eq1]
  12. then
  13. YEAR=`expr$YEAR-1`
  14. MONTH=12
  15. else
  16. MONTH=`expr$MONTH-1`
  17. fi
  18. #如下两种方法皆可
  19. #DAY=`echo\`cal$MONTH$YEAR\`|tail-n1|awk'{print$NF}'`
  20. #
  21. DAY=$(cal$MONTH$YEAR|tail-n2|sed-n1,1p|awk'{print$NF}')
  22. else
  23. DAY=`expr$DAY-1`
  24. fi
  25. LAST=$(echo"$YEAR$MONTH$DAY"|awk'{if(length($2)==1)$2=0$2;if(length($3)==1)$3=0$3;printf"%s%s%s",$1,$2,$3}')
  26. }
[python] view plain copy
  1. <prename="code"class="python">GetLastDate()
  2. {
  3. TODAY=`date"+%Y%m%d"`
  4. LASTDATE=`echo$TODAY|awk\
  5. '{\
  6. Year=$1;Month=$2;Day=$3;\
  7. M[1]=31;M[2]=28;M[3]=31;M[4]=30;M[5]=31;M[6]=30;\
  8. M[7]=31;M[8]=31;M[9]=30;M[10]=31;M[11]=30;M[12]=31;\
  9. if(Year%4==0&&(Year%100!=0||Year%400==0))M[2]=29;\
  10. elseM[2]=28;\
  11. if(Day-1==0)\
  12. {\
  13. if(Month-1==0){Year-=1;Month=12;}\
  14. elseMonth-=1;\
  15. Day=M[Month];\
  16. }\
  17. elseDay-=1;\
  18. printf("%04d%02d%02d",Year,Month,Day);\
  19. }'`
  20. }
  21. echo"***************"
  22. lastday
  23. echo${LAST}
  24. echo"***************"
  25. GetLastDate
  26. echo${LASTDATE}</pre><prename="code"class="python">-----------------------------------------------------------</pre><prename="code"class="python">常用日期格式</pre><prename="code"class="python"></pre><prename="code"class="php">[root@localhosttmp]#date+"%F"
  27. 2012-06-08
  28. [root@localhosttmp]#date+"%D"
  29. 06/08/12
  30. [root@localhosttmp]#date+"%Y%m%d%H:%M:%S"
  31. 2012060804:52:28
  32. [root@localhosttmp]#date+"%Y%m%d"
  33. 20120608
  34. [root@localhosttmp]#date+"%Y%m%d%H:%M:%S"-d"+1hours"
  35. 2012060805:52:43
  36. [root@localhosttmp]#date+"%Y%m%d%H:%M:%S"-d"+1days"
  37. 2012060904:52:52
  38. [root@localhosttmp]#date+"%Y%m%d%H:%M:%S"-d"+1months"
  39. 2012070804:52:56
  40. [root@localhosttmp]#date+"%Y%m%d%H:%M:%S"-d"+1years"
  41. 2013060804:53:07</pre><prename="code"class="php">[root@localhosttmp]#date+"%T"
  42. 05:03:21
  43. [root@localhosttmp]#date+"%F%T"
  44. 2012-06-0805:03:34
  45. [root@localhosttmp]#date+"%D%T"
  46. 06/08/1205:03:39</pre><prename="code"class="php"><pre></pre>
  47. <pre></pre>
  48. <pre></pre>
  49. <pre></pre>
  50. <pre></pre>
  51. <pre></pre>
  52. <pre></pre>
  53. <pre></pre>
  54. </pre>


  1. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"
  2. 2012-07-1805:17:01
  3. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"+10hour"
  4. 2012-07-1815:17:16
  5. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"+24hour"
  6. 2012-07-1905:17:37
  7. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"-24hour"
  8. 2012-07-1705:17:45
  9. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"-20minute"
  10. 2012-07-1804:58:00
  11. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"+20minute"
  12. 2012-07-1805:38:05
  13. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"+2day"
  14. 2012-07-2005:18:15
  15. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"-2day"
  16. 2012-07-1605:18:19
  17. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"-2month"
  18. 2012-05-1805:18:24
  19. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"+2month"
  20. 2012-09-1805:18:28
  21. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"+2year"
  22. 2014-07-1805:18:32
  23. [root@localhostriqi]#date+"%Y-%m-%d%H:%M:%S"-d"-2year"
  24. 2010-07-1805:18:36

---------------------------------------------------

用shell将时间字符串与时间戳互转

date+%s可以得到UNIX的时间戳;
用shell将时间字符串与时间戳互转:
date-d"2010-10-1800:00:00"+%s输出形如:1287331200
而时间戳转换为字符串可以这样做:
date-d@1287331200"+%Y-%m-%d"输出形如:2010-10-18
如果需要得到指定日期的前后几天,可以:
1、seconds=`date-d"2010-10-1800:00:00"+%s`#得到时间戳
2、seconds_new=`expr$seconds+86400`#加上一天的秒数86400
3、date_new=`date-d@$seconds_new"+%Y-%m-%d"`#获得指定日前加上一天的日前

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值