Ksh日期验证YYYYMMDD

时间:2014-07-17 17:16:30

标签: shell scripting ksh

我在下面的简单日期验证中遇到了一个奇怪的问题。 它在某些日期未通过验证。 一个例子是:20140717

其他日期通过验证确定吗?即:20140727

validate_date()
{

typeset my_date=$1

if [[ $my_date = [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]  ; then
return 0;
else
return 1
fi
}

有人可以在ksh上运行它,看看是否会发生同样的情况吗?

1 个答案:

答案 0 :(得分:3)

我无法理解为什么代码会为您的输入提供不正确的结果。

我认为验证日期的更好方法之一是使用date -d "datestring" 如果成功则返回字符串显示的时间,并在日期验证失败时返回错误 所以在date -d "datestring"之后..你可以检查$的值吗?所以要知道验证的成功与否。

例如

ajay@pavilion:~$ date -d 20140730
Wed Jul 30 00:00:00 IST 2014
ajay@pavilion:~$ echo $?
0
ajay@pavilion:~$ date -d 20140750
date: invalid date ‘20140750’
ajay@pavilion:~$ echo $?
1
ajay@pavilion:~$