请问如何判断时间格式是否正确呢?

sh/bash/dash/ksh/zsh等Shell脚本
回复
mushroom09
帖子: 16
注册时间: 2009-08-13 16:57

请问如何判断时间格式是否正确呢?

#1

帖子 mushroom09 » 2009-10-29 14:15

我写一脚本要求输入的第一个参数格式为 hh:mm:ss
请问在脚本中如何判断参数格式是否正确呢?
我是初学的,grep用的还不熟,中间的':'不知如何处理 :em06

谢谢!
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请问如何判断时间格式是否正确呢?

#2

帖子 eexpress » 2009-10-29 14:17

为什么那输入这个作参数啊。
● 鸣学
mushroom09
帖子: 16
注册时间: 2009-08-13 16:57

Re: 请问如何判断时间格式是否正确呢?

#3

帖子 mushroom09 » 2009-10-29 14:22

感觉在使用的时候这个格式比较人性化好理解啊,而且脚本需要把时间转换成秒数
有什么方法吗?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请问如何判断时间格式是否正确呢?

#4

帖子 eexpress » 2009-10-29 14:27

就知道你还有其他步骤。最好找一个支持strftime函数的语言来写。
● 鸣学
头像
yingfei
帖子: 273
注册时间: 2007-09-03 18:34
来自: 羊城通

Re: 请问如何判断时间格式是否正确呢?

#5

帖子 yingfei » 2009-10-29 14:28

给你一个不是灰常灰常严格的判断。 不过一般的应用 应该没什么问题:

代码: 全选

echo $1 | grep "^\([0-2][0-3]\):\([0-5][0-9]\):\([0-5][0-9]\)$"
[ "$?" = "0" ] && echo OK  ||  echo NOT OK
[/size]
t3swing
帖子: 1028
注册时间: 2008-11-01 21:42
来自: 树下板凳

Re: 请问如何判断时间格式是否正确呢?

#6

帖子 t3swing » 2009-10-29 15:31

用date判断吧 ,同时也可以输出1970到现在的秒数(%s参数)
例子:
date -d 36:12:12 +%s;echo $?
date: 无效的日期 “36:12:12”
1

str="15:30:59";date -d $str +%s;echo $?
1256801459
0

根据返回值判断输入时间是否正确,date很强大,一般常用处理够了
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。
steven zhao
帖子: 10
注册时间: 2009-04-11 10:12

Re: 请问如何判断时间格式是否正确呢?

#7

帖子 steven zhao » 2009-10-29 19:40

用 cut -f:分割三个,用awk也能做到的
zzxop
帖子: 45
注册时间: 2005-04-26 15:23

Re: 请问如何判断时间格式是否正确呢?

#8

帖子 zzxop » 2009-11-18 11:38

yingfei 写了:给你一个不是灰常灰常严格的判断。 不过一般的应用 应该没什么问题:

代码: 全选

echo $1 | grep "^\([0-2][0-3]\):\([0-5][0-9]\):\([0-5][0-9]\)$"
[ "$?" = "0" ] && echo OK  ||  echo NOT OK
[/size]
支持正则表达式
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请问如何判断时间格式是否正确呢?

#9

帖子 eexpress » 2009-11-18 14:58

错得很多的。还支持。
:em04
● 鸣学
回复