linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > SHELL >
栏目导栏
资料搜索
热门文章
·csh shell编程入门
·玩转Linux shell命令提示符
·Bourne Shell及shell编程
·Shell 编程实例集锦
·Linux下的shell编程入门
·Shell编程基础
·linux shell 编程基础
·shell基础十二篇
·Linux的Shell编程
·linux Shell编程入门 实例讲解
·Linux主要shell命令详解
·Linux shell 脚本实例一
·深入浅出Shell编程: Shell 变量
·shell命令(一)
·UNIX/LINUX SHELL 正则表达式语
最新文章
·Linux系统中加入自定义Shell为
·Shell学习:关于替换命令-tr-R
·Linux Shell学习:uniq命令使用
·uClinux操作系统下的shell功能
·Shell编程基础:单引号和双引号
·Linux操作系统下Shell语句元字
·Linux系统环境程序设计之路
·Linux Shell中PS命令中的%CPU的
·Linux Shell元字符知识笔记
·压缩命令-vi-认识SHELL-正规表
·Linux系统下Shell命令行快捷键
·谈Linux Shell下的输出重定向
·在Shell中执行vi/cp/mv时自动备
·shell数组介绍
·开启和关闭Shell特性的小技巧
Google
 
用shell写的几个日期函数
[ 作者:  加入时间:2007-11-27 11:45:09  来自:Linux联盟收集整理 ]

######################################yX5Linux联盟
#Purpose     :  日期计算函数         #yX5Linux联盟
#Date        :  2007-11-13 15:43     #yX5Linux联盟
######################################

# !/bin/ksh

# 获取月份最大日期yX5Linux联盟
get_mon_days()yX5Linux联盟
{yX5Linux联盟
 Y=`expr substr $1 1 4`yX5Linux联盟
 M=`expr substr $1 5 2`

 r1=`expr $Y \% 4`yX5Linux联盟
 r2=`expr $Y \% 100`yX5Linux联盟
 r3=`expr $Y \% 400`

 case $M inyX5Linux联盟
 01|03|05|07|08|10|12) days=31;;yX5Linux联盟
 04|06|09|11) days=30;;yX5Linux联盟
 02)yX5Linux联盟
  r1=`expr $Y \% 4`yX5Linux联盟
  r2=`expr $Y \% 100`yX5Linux联盟
  r3=`expr $Y \% 400`yX5Linux联盟
  # 闰年yX5Linux联盟
  if [ r1 -eq 0 -a r2 -ne 0 -o r3 -eq 0  ] ; thenyX5Linux联盟
   days=29yX5Linux联盟
  elseyX5Linux联盟
   days=28yX5Linux联盟
  fiyX5Linux联盟
  ;;yX5Linux联盟
 *)yX5Linux联盟
  days=0yX5Linux联盟
  ;;yX5Linux联盟
 esacyX5Linux联盟
 echo $daysyX5Linux联盟
}

check_date()yX5Linux联盟
{yX5Linux联盟
 # 0 合法 1 非法yX5Linux联盟
 FLAG=0yX5Linux联盟
 Y=`expr substr $1 1 4`yX5Linux联盟
 M=`expr substr $1 5 2`yX5Linux联盟
 D=`expr substr $1 7 2`

 days=`get_mon_days $Y$M`

 if ! [ $D -ge 1 -a $D -le $days ] ; thenyX5Linux联盟
  FLAG=1yX5Linux联盟
 fi

 echo $FLAGyX5Linux联盟
}yX5Linux联盟
#返回昨天日期yX5Linux联盟
get_before_date()yX5Linux联盟
{yX5Linux联盟
 Y=`expr substr $1 1 4`yX5Linux联盟
 M=`expr substr $1 5 2`yX5Linux联盟
 D=`expr substr $1 7 2`yX5Linux联盟
 YY=`expr $Y - 1`yX5Linux联盟
 MM=`expr $M - 1`yX5Linux联盟
 DD=`expr $D - 1`yX5Linux联盟
 MM=`printf "%02d" $MM`yX5Linux联盟
 DD=`printf "%02d" $DD`yX5Linux联盟
 dd=$Y$MMyX5Linux联盟
 dad=`get_mon_days $dd`yX5Linux联盟
 be_date=$Y$M$DDyX5Linux联盟
 if [ $D -eq 01 ]yX5Linux联盟
 thenyX5Linux联盟
  if [ $M -ne 01 ]yX5Linux联盟
  thenyX5Linux联盟
   be_date=$Y$MM$dadyX5Linux联盟
  fiyX5Linux联盟
  if [ $M -eq 01 ]yX5Linux联盟
  thenyX5Linux联盟
   be_date=$YY"1231"yX5Linux联盟
  fiyX5Linux联盟
 fiyX5Linux联盟
 echo $be_dateyX5Linux联盟
}

#返回明天日期yX5Linux联盟
get_next_date()yX5Linux联盟
{yX5Linux联盟
 Y=`expr substr $1 1 4`yX5Linux联盟
 M=`expr substr $1 5 2`yX5Linux联盟
 D=`expr substr $1 7 2`yX5Linux联盟
 YY=`expr $Y + 1`yX5Linux联盟
 MM=`expr $M + 1`yX5Linux联盟
 DD=`expr $D + 1`yX5Linux联盟
 MM=`printf "%02d" $MM`yX5Linux联盟
 DD=`printf "%02d" $DD`yX5Linux联盟
 r1=`expr $Y \% 4`yX5Linux联盟
 r2=`expr $Y \% 100`yX5Linux联盟
 r3=`expr $Y \% 400`

 # 通常情况yX5Linux联盟
 next_date=$Y$M$DD

 # 特殊情况1,小月月末yX5Linux联盟
 if [ $D -eq 30 ]yX5Linux联盟
 thenyX5Linux联盟
  case $M inyX5Linux联盟
  04|06|09|11) next_date=$Y$MM"01";;yX5Linux联盟
  esacyX5Linux联盟
 fiyX5Linux联盟
 # 特殊情况2,大月月末yX5Linux联盟
 if [ $D -eq 31 ]yX5Linux联盟
 thenyX5Linux联盟
  next_date=$Y$MM"01"yX5Linux联盟
  case $M inyX5Linux联盟
   12) next_date=$YY"0101";;yX5Linux联盟
  esacyX5Linux联盟
 fiyX5Linux联盟
 # 特殊情况3,2月月末yX5Linux联盟
 if [ $M -eq 02 ]yX5Linux联盟
 thenyX5Linux联盟
  # 闰年yX5Linux联盟
  if [ r1 -eq 0 -a r2 -ne 0 -o r3 -eq 0 ]yX5Linux联盟
  thenyX5Linux联盟
   if [ $D -eq 29 ]yX5Linux联盟
   thenyX5Linux联盟
    next_date=$Y$MM"01"yX5Linux联盟
   fiyX5Linux联盟
  elseyX5Linux联盟
   if [ $D -eq 28 ]yX5Linux联盟
   thenyX5Linux联盟
    next_date=$Y$MM"01"yX5Linux联盟
   fiyX5Linux联盟
  fiyX5Linux联盟
 fiyX5Linux联盟
 echo $next_dateyX5Linux联盟
}

# 开始调用yX5Linux联盟
get_before_date $1yX5Linux联盟
get_next_date $1yX5Linux联盟
check_date $1

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·API函数ShellExecute的多种用法  (2007-11-26 13:29:55)
 ·Win2K的外壳(Shell)的妙用  (2007-11-20 13:32:45)
 ·shell学习—关于grep的简单使用  (2007-11-20 10:42:36)
 ·shell预定义变量  (2007-11-18 17:28:21)
 ·测试远端FTP是否正常的SHELL  (2007-11-12 15:57:13)
 ·使用ShellExecute来进行Ping操作  (2007-11-09 11:32:09)
 ·给自己的文件类型添加ShellNew功能  (2007-11-09 11:01:16)
 ·ftok函数的shell脚本实现  (2007-11-09 10:25:00)
 ·shell set 命令详解  (2007-11-09 10:23:48)
 ·shell 学习资料  (2007-11-05 17:21:52)