Bash 中关于日期时间操作的常用自定义函数

ufwdp 贡献于2014-07-17

作者 L  创建于2012-06-04 06:04:00   修改者Lingda  修改于2013-01-16 03:26:00字数11845

文档摘要: Bash中关于日期时间操作的常用自定义函数在编写LinuxBash脚本时,经常会用到一些日期时间有关的命令,下面是我多年Shell编程中常用的函数,现在整理出来,希望起到抛砖引玉的作用。
关键词:

Bash中关于日期时间操作的常用自定义函数 在编写Linux Bash脚本时,经常会用到一些日期时间有关的命令,下面是我多年Shell编程中常用的函数,现在整理出来,希望起到抛砖引玉的作用。     附件包括三个文件: datetime.sh  包含了Bash中关于日期时间操作的常用自定义函数 test_datetime.sh 用来展示datetime.sh中自定义函数的用法 test_datetime.txt 是test_datetime.sh的一次执行输出样本   执行命令: Bash代码   1. ./test_datetime.sh >test_datetime.txt       文件:datetime.sh Bash代码   1. #!/bin/sh   2.    3.    4. # Copyright (c) 2010 codingstandards. All rights reserved.   5. # file: datetime.sh   6. # description: Bash中关于日期时间操作的常用自定义函数   7. # license: LGPL   8. # author: codingstandards   9. # email: codingstandards@gmail.com   10. # version: 1.0   11. # date: 2010.02.27   12.    13.    14. # usage: yesterday   15. # 昨天   16. # 比如今天是2010年2月27日,那么结果就是2010-02-26   17. yesterday()   18. {   19.     date --date='1 day ago' +%Y-%m-%d   20. }   21.    22. # usage: today   23. # 今天   24. # 比如今天是2010年2月27日,那么结果就是2010-02-27   25. today()   26. {   27.     date +%Y-%m-%d   28. }   29.    30. # usage: now   31. # 现在,包括日期和时间、纳秒   32. # 比如:2010-02-27 11:29:52.991774000   33. now()   34. {   35.     date "+%Y-%m-%d %H:%M:%S.%N"   36. }   37.    38. # usage: curtime   39. # 当前时间,包括日期和时间   40. # 比如:2010-02-27 11:51:04   41. curtime()   42. {   43.     date '+%Y-%m-%d %H:%M:%S'   44.     # 也可写成:date '+%F %T'   45. }   46.    47. # usage: last_month   48. # 取上个月的年月   49. # 比如:2010-01   50. last_month()   51. {   52.     date --date='1 month ago' '+%Y-%m'   53. }   54.    55. # usage: last_month_packed   56. # 取上个月的年月   57. # 比如:201001   58. last_month_packed()   59. {   60.     date --date='1 month ago' '+%Y%m'   61. }   62.    63. # usage: first_date_of_last_month   64. # 取上个月的第一天   65. # 比如本月是2010年2月,那么结果就是2010-01-01   66. first_date_of_last_month()   67. {   68.     date --date='1 month ago' '+%Y-%m-01'   69. }   70.    71. # usage: last_date_of_last_month   72. # 取上个月的最后一天   73. # 比如当前是2010年2月,那么结果就是2010-01-31   74. last_date_of_last_month()   75. {   76.     date --date="$(date +%e) days ago" '+%Y-%m-%d'   77. }   78.    79. # usage: day_of_week   80. # 今天的星期   81. # day of week (0..6);  0 represents Sunday   82. day_of_week()   83. {   84.     date +%w   85. }   86.    87. # usage: last_hour   88. # 上个小时   89. # 比如:2010-02-27-10   90. # 适合处理log4j生成的日志文件名   91. last_hour()   92. {   93.     date --date='1 hour ago' +%Y-%m-%d-%H   94. }   95.    96. # usage: the_hour   97. # 当前的小时,为方便算术比较,结果不以0开头   98. # 比如:12   99. the_hour()   100. {   101.     #date +%H   # hour (00..23)   102.     date +%k    # hour ( 0..23)   103. }   104.    105. # usage: the_minute   106. # 当前的分钟,为方便算术比较,结果不以0开头   107. # 比如:   108. the_minute()   109. {   110.     MM=$(date +%M)  # minute (00..59)   111.     echo $[1$MM-100]   112. }   113.    114. # usage: the_second   115. # 当前的秒数   116. # 比如:   117. the_second()   118. {   119.     SS=$(date +%S)  # second (00..60); the 60 is necessary to accommodate a leap  second   120.     echo $[1$SS-100]   121. }   122.    123. # usage: the_year   124. # 当前的年份 year (1970...)   125. # 比如:2010   126. the_year()   127. {   128.     date +%Y   129. }   130.    131. # usage: the_month   132. # 当前的月份,为方便算术比较,结果不以0开头   133. # 比如:2   134. the_month()   135. {   136.     M=$(date +%m) # month (01..12)   137.     echo $[1$M-100]   138. }   139.    140. # usage: the_date   141. # 当前的日期,为方便算术比较,结果不以0开头   142. # 比如:27   143. the_date()   144. {   145.     date +%e    # day of month, blank padded ( 1..31)   146. }   147.    148. # usage: days_ago    149. # 取n天前的日期   150. # 比如:days_ago 0就是今天,days_ago 1就是昨天,days_ago 2就是前天,days_ago -1就是明天   151. # 格式:2010-02-27   152. days_ago()   153. {   154.     date --date="$1 days ago" +%Y-%m-%d   155. }   156.    157. # usage: chinese_date_and_week()   158. # 打印中文的日期和星期   159. # 比如:2月27日 星期六   160. chinese_date_and_week()   161. {   162.     WEEKDAYS=(星期日 星期一 星期二 星期三 星期四 星期五 星期六)   163.     WEEKDAY=$(date +%w)   164.     #DT="$(date +%Y年%m月%d日) ${WEEKDAYS[$WEEKDAY]}"      165.     MN=1$(date +%m)   166.     MN=$[MN-100]   167.     DN=1$(date +%d)   168.     DN=$[DN-100]   169.     DT="$MN月$DN日 ${WEEKDAYS[$WEEKDAY]}"   170.     echo "$DT"   171. }   172.    173. # usage: rand_digit   174. # 随机数字,0-9   175. rand_digit()   176. {   177.     S="$(date +%N)"   178.     echo "${S:5:1}"   179. }   180.    181. # usage: seconds_of_date [ [

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档