判断输入shell脚本的日期格式是否正确

if echo $1 | grep -q "-" && date -d $1 +%Y%m%d > /dev/null 2>&1
  then :;
else
  echo "输入的日期格式不正确,应为yyyy-mm-dd";
  exit 1;
fi;
##这个不对,输入2010-12--1也是可以的,显然不合法
-----------------------------------------------------------------------------------------------------------
if echo $1 | grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d $1 +%Y%m%d > /dev/null 2>&1
  then :;
else
  echo "输入的日期格式不正确,应为yyyy-mm-dd";
  exit 1;
fi;

 

转载于:https://www.cnblogs.com/guotianqi/p/7520026.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Shell脚本日期格式转换是指将日期从一种格式转换为另一种格式。在Shell脚本中,可以使用date命令来进行日期格式转换。例如,将日期从“2021-01-01”转换为“01/01/2021”可以使用以下命令: ``` date -d "2021-01-01" +"%m/%d/%Y" ``` 其中,“-d”选项指定要转换的日期,“+%m/%d/%Y”指定转换后的日期格式。 除了使用date命令,还可以使用其他工具如awk、sed等来进行日期格式转换。例如,将日期从“2021-01-01”转换为“20210101”可以使用以下命令: ``` echo "2021-01-01" | awk -F "-" '{print $1$2$3}' ``` 其中,“-F”选项指定分隔符为“-”,“{print $1$2$3}”指定输出第1、2、3个字段,即年、月、日,并将它们拼接起来。 ### 回答2: Shell脚本日期格式转换是一项非常基础的任务。在Shell编程中,我们通常需要对日期进行转换以便于将不同格式日期进行比较、排序或者输出。下面我将介绍一些常用的日期格式转换技巧。 1.将日期从“YYYYMMDD”格式转换为“YYYY-MM-DD”格式 这是最基础、也是最常用的日期格式转换。在Shell脚本中,我们可以使用sed命令来实现这一转换。具体命令如下: date="20201231" echo $date | sed 's/\(....\)\(..\)\(..\)/\1-\2-\3/g' 以上命令的意思是将日期变量date中的前四个字符作为年份,接下来两个字符作为月份,再接下来的两个字符作为日期,然后按照“YYYY-MM-DD”格式输出。 2.将日期从“YYYY-MM-DD”格式转换为时间戳 在Shell脚本中,我们有时需要将日期转换为时间戳(即从1970年1月1日0时起经过的秒数)。这个转换也非常简单,只需要使用date命令加上“-d”选项即可,具体命令如下: date="2020-12-31" date -d "$date" +%s 以上命令中,“+%s”表示输出时间戳,可以根据需要添加不同的格式选项,如“%Y%m%d”表示输出“YYYYMMDD”格式日期。 3.将时间戳转换为“YYYY-MM-DD”格式日期 与上述转换相反,我们有时需要将时间戳转换为可读性更好的“YYYY-MM-DD”格式日期。这个转换也可以使用date命令,具体命令如下: timestamp="1609372800" date -d "@$timestamp" "+%Y-%m-%d" 以上命令中,“@”表示所提供的参数为时间戳。可以根据需要添加不同的格式选项,如“%Y%m%d”表示输出“YYYYMMDD”格式日期。 除了上述三种常用的日期格式转换,还有一些其他的转换技巧,在实际的Shell编程中应用较少。总体而言,日期Shell编程中非常重要的一个因素,掌握日期格式转换技巧能够为我们编写出更加高效、实用的脚本提供有力的支持。 ### 回答3: Shell脚本是一种常用的自动化脚本语言,在脚本编写中,日期处理是经常遇到的问题。在不同的场景下,需要转换不同格式日期,而日期格式转换在Shell脚本中的处理也有不同的方式。 首先,Shell脚本中可以使用date命令来获取当前的日期和时间,如下所示: ``` #!/bin/bash now=$(date +"%Y-%m-%d %H:%M:%S") echo "当前时间:$now" ``` 上面的代码中,date命令使用了+%Y-%m-%d %H:%M:%S来指定了日期时间输出的格式,%Y代表年份、%m代表月份、%d代表日期、%H代表小时、%M代表分钟、%S代表秒钟。运行上面的代码,可以输出当前的日期和时间,如下所示: ``` 当前时间:2022-01-01 12:00:00 ``` 除了获取当前日期和时间外,Shell脚本还可以将不同格式日期互相转换。例如,将日期从“2022-01-01”转换成“20220101”的格式,可以使用下面的代码: ``` #!/bin/bash date_str="2022-01-01" new_date=$(echo $date_str | sed 's/-//g') echo "新日期:$new_date" ``` 上面的代码中,使用了sed命令将日期字符串中的“-”替换成空字符,从而实现了日期格式的转换。运行上面的代码,可以输出新的日期字符串“20220101”。 除此之外,Shell脚本还可以使用date命令将一个格式日期转换成另一个格式日期,例如: ``` #!/bin/bash date_str="2022-01-01" new_date=$(date -d "$date_str" +"%Y%m%d") echo "新日期:$new_date" ``` 上面的代码中,date命令使用-d参数来指定一个日期字符串,+%Y%m%d来指定输出的日期格式。运行上面的代码,可以输出新的日期字符串“20220101”。 无论是将日期字符串互相转换,还是使用date命令进行日期格式的转换,都需要了解不同日期格式之间的转换规则。同时,在进行日期处理时,也要注意时区的问题,以免因时区差异导致日期计算错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值