该资源提供了一系列的Shell脚本函数,专门用于日期处理。这些函数包括检查闰年(check_leap)、获取指定月份天数(get_mon_days和get_mon_days2)、验证日期格式(check_date)、获取前一日期(get_before_date)、获取后一日期(get_next_date)、获取当前日期(get_cur_date)、获取当前月份(get_cur_month)、获取某月最后一天(get_last_date)以及获取上一月份(get_last_month)。这些函数对于在Shell脚本中进行日期计算和处理非常有用。 详细说明: 1. **检查闰年(check_leap)**: 这个函数接受一个年份作为参数,通过计算年份除以4、100和400的余数来判断是否为闰年。如果年份能被4整除且不能被100整除,或者能被400整除,那么它就是闰年,函数返回"true",否则返回"false"。 2. **获取指定月份天数(get_mon_days)**: 此函数接收年份和月份作为参数,根据月份的值来确定该月有多少天。1、3、5、7、8、10、12月有31天;4、6、9、11月有30天;2月则根据`check_leap`函数判断是否为闰年来决定,闰年2月有29天,非闰年2月有28天。 3. **获取指定月份天数(get_mon_days2)**: 和get_mon_days类似,但这个函数内部调用了`check_leap`函数来判断闰年,使得代码结构更清晰。 4. **验证日期格式(check_date)**: 这个函数的代码没有给出,但通常会检查输入的日期是否符合标准的日期格式(如YYYY-MM-DD),并确保年、月、日的值在有效范围内。 5. **获取前一日期(get_before_date)**和**获取后一日期(get_next_date)**: 这两个函数可能会根据当前日期或指定日期向前或向后推算一天,并返回新的日期字符串。 6. **获取当前日期(get_cur_date)**: 函数可能使用内置命令(如`date`)来获取系统当前的日期,并格式化为指定的YYYYMMDD格式。 7. **获取当前月份(get_cur_month)**: 类似地,这个函数会获取当前系统日期的月份,格式化为YYYYMM格式。 8. **获取某月最后一天(get_last_date)**: 输入一个年份和月份,函数将返回该月的最后一天,如02-28或02-29。 9. **获取上一月份(get_last_month)**: 给定一个日期,函数返回上一个月的日期,例如从03-01返回02-01。 这些函数可以集成到Shell脚本中,用于处理日期相关的逻辑,例如计算日期差、检查日期合法性、生成日程表等任务。在编写涉及日期处理的Shell脚本时,这些函数可以极大地提高效率和准确性。
#SHELL日期计算函数 #
#1:判断是否闰年check_leap() #
#2:获取月份最大日期get_mon_days() #
#3:检查日期格式check_date() #
#4:返回昨天日期get_before_date() #
#5:返回明天日期get_next_date() #
#6:返回当月月末日期YYYYMMDD get_cur_date()
#7:返回当月月份YYYYMM get_cur_month()
#8:返回上月月末日期YYYYMMDD get_last_date()
#9:返回上月月份YYYYMM get_last_month()
######################################
#-----------------------------------------------------------------
#判断是否闰年
#input:year
#output: "true" "fase"
check_leap()
{
Y=`expr substr $1 1 4`
r1=`expr $Y % 4`
r2=`expr $Y % 100`
r3=`expr $Y % 400`
if [ $r1 -eq 0 -a $r2 -ne 0 -o $r3 -eq 0 ]
then
FRUN="true"
else
FRUN="false"
fi
echo $FRUN
}
# 获取月份最大日期
#方法1
get_mon_days()
{
Y=`expr substr $1 1 4`
M=`expr substr $1 5 2`
case "$M" in
01|03|05|07|08|10|12) days=31;;
04|06|09|11) days=30;;
02)
_tmpStr=`check_leap "$Y"` #判断是否闰年
if [ "$_tmpStr" = "true" ] ; then
#闰年
days=29
else
days=28
fi
;;
*)
days=0
;;
esac
echo $days
}
#-----------------------------------------------------------------
# 获取月份最大日期
#方法2
剩余7页未读,继续阅读
- 粉丝: 1
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦