unix - 检查用户在 UNIX 中输入的日期和时间

标签 unix shell unix-timestamp

我有一个 Shell 脚本,它使用用户输入的日期和时间参数。
日期为 mm/dd/yyyy ,时间为 HH:MM 。
检查用户是否输入了正确的日期的最简单方法是什么 [比如月份应该小于 12.... 时间 MM 应该小于 60...
我们在 UNIX 中是否有任何内置函数来检查时间戳?

最佳答案

你可以使用 unix 日期 为您解析和验证它的工具,并测试返回码,例如

有效日期,返回码为 0:

joel@bohr:~$ date -d "12/12/2000 13:00"
Tue Dec 12 13:00:00 GMT 2000
joel@bohr:~$ echo $?
0

无效日期,返回码 1:
joel@bohr:~$ date -d "13/12/2000 13:00"
date: invalid date `13/12/2000 13:00'
joel@bohr:~$ echo $?
1

您可以改变 接受的输入格式日期 通过使用 +格式 选项 ( man date )

将它们放在一起作为一个小脚本:
usrdate=$1
date -d "$usrdate"  > /dev/null 2>&1
if [ $? -eq 0 ]; then
        echo "Date $usrdate was valid"
else
        echo "Date $usrdate was invalid"
fi

关于unix - 检查用户在 UNIX 中输入的日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4614759/

相关文章:

unix - 如何跳过文件的第一行 - awk

shell - cron 运行的 shell 脚本中的 echo 语句

mysql - 标准之间的日期每周一都会变化

php - 二进制转字符串,每8位空格

linux - 如何分离 bash 文件生成的每个命令的输出?

objective-c - Unix 时间戳未正确转换为 NSDate

php - unix 时间戳四舍五入到午夜

regex - 如何使用 sed 删除不包含模式的行

bash - 区分大小写的排序 Unix Bash

unix - 如何运行 tcsh shell 命令并有选择地忽略状态?