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

来源:互联网 发布:多表查询sql语句 编辑:程序博客网 时间:2024/06/05 08:04
第一种 使用date -d 选项
              date  +"%Y%m%d" -d  "+n days"         今天的后n天日期  
              date  +"%Y%m%d" -d  "-n days"          今天的前n天日期
  • 自己写函数
[python] view plaincopy
  1. #!/bin/ksh  
  2. #获取昨天的日期  
  3. lastday()  
  4. {  
  5.   Today=`date +%Y%m%d`  
  6.   YEAR=`echo $Today|cut -c 1-4`  
  7.   MONTH=`echo $Today|cut -c 5-6`  
  8.   DAY=`echo $Today|cut -c 7-8`  
  9.   if [ $DAY -eq 1 ]  
  10.   then  
  11.     if [ $MONTH -eq 1 ]  
  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 -n 1,1p | awk '{print $NF}')  
  22.   
  23.   else  
  24.     DAY=`expr $DAY - 1`  
  25.   fi  
  26.   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}')  
  27. }  
[python] view plaincopy
  1. <pre name="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.   
  10.   
  11. if (Year%4==0 && (Year%100!=0 || Year%400==0)) M[2]=29; \  
  12. else M[2]=28; \  
  13. if (Day-1==0) \  
  14. { \  
  15. if (Month-1==0) { Year-=1; Month=12; } \  
  16. else Month-=1; \  
  17. Day=M[Month]; \  
  18. } \  
  19. else Day-=1; \  
  20. printf("%04d%02d%02d", Year, Month, Day); \  
  21. }'`  
  22. }  
  23.   
  24.   
  25. echo "***************"  
  26. lastday  
  27. echo ${LAST}  
  28. echo "***************"  
  29. GetLastDate  
  30. echo ${LASTDATE}</pre><pre name="code" class="python">-----------------------------------------------------------</pre><pre name="code" class="python">常用日期格式 </pre><pre name="code" class="python"></pre><pre name="code" class="php">[root@localhost tmp]# date +"%F"  
  31. 2012-06-08  
  32. [root@localhost tmp]# date +"%D"  
  33. 06/08/12  
  34. [root@localhost tmp]# date +"%Y%m%d %H:%M:%S"  
  35. 20120608 04:52:28  
  36. [root@localhost tmp]# date +"%Y%m%d"  
  37. 20120608  
  38. [root@localhost tmp]# date +"%Y%m%d %H:%M:%S" -d "+1 hours"  
  39. 20120608 05:52:43  
  40. [root@localhost tmp]# date +"%Y%m%d %H:%M:%S" -d "+1 days"  
  41. 20120609 04:52:52  
  42. [root@localhost tmp]# date +"%Y%m%d %H:%M:%S" -d "+1 months"  
  43. 20120708 04:52:56  
  44. [root@localhost tmp]# date +"%Y%m%d %H:%M:%S" -d "+1 years"  
  45. 20130608 04:53:07</pre><pre name="code" class="php">[root@localhost tmp]# date +"%T"  
  46. 05:03:21  
  47. [root@localhost tmp]# date +"%F %T"  
  48. 2012-06-08 05:03:34  
  49. [root@localhost tmp]# date +"%D %T"  
  50. 06/08/12 05:03:39</pre><pre name="code" class="php"><pre></pre>  
  51. <pre></pre>  
  52. <pre></pre>  
  53. <pre></pre>  
  54. <pre></pre>  
  55. <pre></pre>  
  56. <pre></pre>  
  57. <pre></pre>  
  58. </pre>  


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

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

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

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

原创粉丝点击