首页 > 其他分享 >如何写一个脚本判断日期是否合法

如何写一个脚本判断日期是否合法

时间:2023-04-17 10:23:13浏览次数:30  
标签:脚本 年份 合法 日期 2022 cal echo day

【需求】

用shell脚本判断输入的日期是否合法。就是判断日期是否是真实的日期,比如20170110就是合法日期,20171332就不合法。假定年份不超过4位。

【分析】

判断日期是否合法,使用cal命令即可,cal命令用法:

1)cal什么都不加,打印全年的日历

cal

2)cal后面带一个参数,只能是带年份

cal 2022

这里的2022为年份,数值最小值为1,最大为999999999。

3)cal后面带两个参数,第一个为月份,第二个为年份

cal 10 2022

如果带两个参数时,第一个参数范围为1-12

4)cal后面带三个参数,第一个为日期,第二个为月份,第三个为年份

cal 10 10 2022

第一个数值范围1-31

有了以上cal命令的用法总结,接下来就是要把提供的日期划分成三部分:日期、月份、年份。

截取字符串,可以使用${a:n1:n2},例如

a=12345echo ${a:0:3}  ##表示,截取字符串从第一位开始,截取3位123

【参考答案】

#!/bin/bashif [ $# -ne 1 ] || [ ${#1} -ne 8 ]thenecho "Usage: bash $0 yyyymmdd"exit 1fidatem=$1year=${datem:0:4}month=${datem:4:2}day=${datem:6:2}if echo $day|grep -q '^0'then    day=`echo $day |sed 's/^0//'`fiif cal $day $month $year >/dev/null 2>/dev/nullthen     echo okelse     echo "Error: Please input a wright date."     exit 1fi

标签:脚本,年份,合法,日期,2022,cal,echo,day
From: https://www.cnblogs.com/msjhw/p/17324950.html

相关文章

  • win下使用脚本设置自己的程序开机自启
    1.创建一个xxx.bat文件2.bat添加内容@echooff::延时2秒启动我的exestart"""D:\QTFile\MyWidget\XMZWidget\XMZWidget.exe"&pinglocalhost-n2::执行完命令后关闭cmd命令窗口taskkill/f/imcmd.exeexit保存文件3.双击此bat文件,如果双击此文件后设置的程序启动了......
  • 史上最全近百条Oracle DBA日常维护SQL脚本指令
    查询碎片程度高(实际使用率小于30%)的表 可以收缩的表条件为什么block>100,因为一些很小的表,只有几行数据实际大小很小,但是block一次性分配就是5个(11g开始默认一次性分配1M的block大小了,见createtablestorged的NEXT参数),5个block相对于几行小表数据来说就相差太大了。算法中/0.9......
  • stata 修改日期格式
    use股票名称地区改造日期,cleargenrq=date(list_date,"YMD")formatrq%tdformatrq%dCY-N-Dgenrq1=date(list_date,"YMD")formatrq1%twgenrq2=date(list_date,"YMD")formatrq2%tmgenrq3=date(list_date,"YMD")formatrq......
  • jmeter测试工具-测试基础(2)-jmeter中如何录制脚本
    一:JMeter中录制脚本jmeter中如何录制脚本1,新建一个测试计划---添加---非测试原件---HTTP代理服务器2,在浏览器中进行设置-高级-系统-打开计算机代理设置3,如下图所示,然后启动HTTP代理服务器4,录制完毕,关闭录制,关闭代理  1,创建代理服务器:  2、添加录制控......
  • JMeter 关联、录制脚本、连接数据库
    一、JMeter关联关联:当请求之间有依赖关系,比如一个请求的响应数据是另一个请求的参数数据,这时候就需要用到关联处理。JMeter中常用到的关联方法:正则表达式提取器Xpath提取器JSON提取器1、正则表达式提取器作用:针对任......
  • 【转载】 C#中日期类型DateTime的日期加减操作
    在C#开发过程中,DateTime数据类型用于表示日期类型,可以通过DateTime.Now获取当前服务器时间,同时日期也可以像数字一样进行加减操作,如AddDay方法可以对日期进行加减几天的操作,AddMonth方法可以对日期进行加减几月的操作,AddYear方法可以对日期进行加减年的操作。常用的日期加减操作......
  • 9.数据库分库分表备份 + 随机点名脚本
    1.数据库分库分表备份  2.随机点名脚本 ......
  • Raspberry PI 设置开机自启动脚本 All In One
    RaspberryPI设置开机自启动脚本AllInOnedocsraspi-config$sudoraspi-confighttps://www.raspberrypi.com/documentation/computers/configuration.html#raspi-configconfig.txt$cat/boot/config.txt$sudonano/boot/config.txt$sudovim/boot/config.t......
  • PowerDesigner 导出的SQL脚本不带字段注释,解决办法
    问题PowerDesigner默认导出来的SQL没有注解。这一点是因为你没有添加Comment。新问题如果每个表都需要添加一个重复的Comment,那样太麻烦了。所以可以直接改他的模板,把Comment换成Name。原理类似于comment${comment}=>comment${name}菜单栏:Database>EditCurrentDB......
  • 在线客服系统历史会话搜索,访客消息筛选功能,根据访客时间、标签、活跃日期范围、消息记
    有些客户可能会有这样的需求,对历史访客会话需要能够搜索筛选。 之前,对于历史会话列表,一直就是放那没怎么去点过。因为在聊天面板界面已经能够符合我的需求,没有那么多搜索的需求。但是,还是会有客户需要根据访客时间、标签、活跃日期范围、消息记录搜索对应的访客。所以就针对这......