请各位大牛帮帮忙
15 个解决方案
#1
比如你存日期的字符串是datestr
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d
then
"ok,the date format is yyyy-mm-dd"
fi
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d
then
"ok,the date format is yyyy-mm-dd"
fi
#2
上面那个 如果不符合日期格式会输出错误信息 我们把错误信息屏蔽掉
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
then
"ok,the date format is yyyy-mm-dd"
fi
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
then
"ok,the date format is yyyy-mm-dd"
fi
#3
我需要判断yyyy,mm,dd是否是数字啊
#4
是数字就一定是合法的yyyy-mm-dd?!
我上面那个不但判断是不是yyyy-mm-dd格式 还会用date命令来判断数字是不是合法的日期!
你自己测试一下 好不好?
#5
2010-10-40
这是合法日期吗!明显不是!
这是合法日期吗!明显不是!
#6
谢谢啊。初学者,不怎么懂啊。
我的任务是判断是输入一个日期yyyy-mm-dd判断yyyy年的mm月有多少天,所以就得先判断输入的格式。
谢谢啊,我看shell才4天,所以很多地方都不懂,多多包含
我的任务是判断是输入一个日期yyyy-mm-dd判断yyyy年的mm月有多少天,所以就得先判断输入的格式。
谢谢啊,我看shell才4天,所以很多地方都不懂,多多包含
#7
对呀! 我那个就是判断格式对不对啊 日期是否合法啊
如果合法了 你就开始处理就行了啊!
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
then
这里说明日期已经合法了
分别去判断年也好 月也好 日期也好 在这里写代码就行了
else
echo "你输入的日期不合法"
fi
如果合法了 你就开始处理就行了啊!
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
then
这里说明日期已经合法了
分别去判断年也好 月也好 日期也好 在这里写代码就行了
else
echo "你输入的日期不合法"
fi
#8
多谢多谢啊,我为这个愁了一天了。。。
#9
#!/bin/ksh
vdate()
{
[[ "$1" = @([0-9][0-9][0-9][0-9])-@([0-9][0-9])-@([0-9][0-9]) ]] || { echo nn; return 1; }
integer yy mm dd
echo "$1" | IFS=- read yy mm dd
echo $mm $yy $dd
(cal $mm $yy | grep -q $dd && echo ok || echo fail) 2>&-
}
上面是一个检查日期是否合法的函数
lz可以自己验证一下
vdate 2010-01-02
vdate 2010-01-92
#10
马克~~ 并看看自己的头像
#11
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
这个不对啊,输入2010-12--1也是可以的,显然不合法啊
这个不对啊,输入2010-12--1也是可以的,显然不合法啊
#12
那就改下咯 有问题 尝试自己去完善嘛
if echo $datestr | grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d $datestr +%Y%m%d 2>/dev/null
#13
我是为了完成任务啊,最近工作忙死了,没有时间去研究这个,主要是刚接触不怎么懂,就想快点搞出来。
if echo $datestr | grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d $datestr +%Y%m%d 2>/dev/null
这样写会输出日期,能不不要输出啊
if echo $datestr | grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d $datestr +%Y%m%d 2>/dev/null
这样写会输出日期,能不不要输出啊
#14
if echo $datestr |grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d $datestr +%Y%m%d >/dev/null 2>&1
需要注意的是 现在月份和日期必须输入2位才合法 2010-9-9会认为不合法 要写成2010-09-09
如果你要2010-9-9也合法 那如下改写
if echo $datestr |grep -Eq "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}" && date -d $datestr +%Y%m%d >/dev/null 2>&1
#15
谢谢啊。我就需要2010-09-09是合法的,2010-9-9是非法的。
我现在需要在输入日期不合法的情况下重复输入3次才退出,请大牛帮忙一下。万分感激啊。
我现在需要在输入日期不合法的情况下重复输入3次才退出,请大牛帮忙一下。万分感激啊。
#1
比如你存日期的字符串是datestr
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d
then
"ok,the date format is yyyy-mm-dd"
fi
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d
then
"ok,the date format is yyyy-mm-dd"
fi
#2
上面那个 如果不符合日期格式会输出错误信息 我们把错误信息屏蔽掉
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
then
"ok,the date format is yyyy-mm-dd"
fi
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
then
"ok,the date format is yyyy-mm-dd"
fi
#3
我需要判断yyyy,mm,dd是否是数字啊
#4
是数字就一定是合法的yyyy-mm-dd?!
我上面那个不但判断是不是yyyy-mm-dd格式 还会用date命令来判断数字是不是合法的日期!
你自己测试一下 好不好?
#5
2010-10-40
这是合法日期吗!明显不是!
这是合法日期吗!明显不是!
#6
谢谢啊。初学者,不怎么懂啊。
我的任务是判断是输入一个日期yyyy-mm-dd判断yyyy年的mm月有多少天,所以就得先判断输入的格式。
谢谢啊,我看shell才4天,所以很多地方都不懂,多多包含
我的任务是判断是输入一个日期yyyy-mm-dd判断yyyy年的mm月有多少天,所以就得先判断输入的格式。
谢谢啊,我看shell才4天,所以很多地方都不懂,多多包含
#7
对呀! 我那个就是判断格式对不对啊 日期是否合法啊
如果合法了 你就开始处理就行了啊!
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
then
这里说明日期已经合法了
分别去判断年也好 月也好 日期也好 在这里写代码就行了
else
echo "你输入的日期不合法"
fi
如果合法了 你就开始处理就行了啊!
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
then
这里说明日期已经合法了
分别去判断年也好 月也好 日期也好 在这里写代码就行了
else
echo "你输入的日期不合法"
fi
#8
多谢多谢啊,我为这个愁了一天了。。。
#9
#!/bin/ksh
vdate()
{
[[ "$1" = @([0-9][0-9][0-9][0-9])-@([0-9][0-9])-@([0-9][0-9]) ]] || { echo nn; return 1; }
integer yy mm dd
echo "$1" | IFS=- read yy mm dd
echo $mm $yy $dd
(cal $mm $yy | grep -q $dd && echo ok || echo fail) 2>&-
}
上面是一个检查日期是否合法的函数
lz可以自己验证一下
vdate 2010-01-02
vdate 2010-01-92
#10
马克~~ 并看看自己的头像
#11
if echo $datestr | grep -q "-" && date -d $datestr +%Y%m%d 2>/dev/null
这个不对啊,输入2010-12--1也是可以的,显然不合法啊
这个不对啊,输入2010-12--1也是可以的,显然不合法啊
#12
那就改下咯 有问题 尝试自己去完善嘛
if echo $datestr | grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d $datestr +%Y%m%d 2>/dev/null
#13
我是为了完成任务啊,最近工作忙死了,没有时间去研究这个,主要是刚接触不怎么懂,就想快点搞出来。
if echo $datestr | grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d $datestr +%Y%m%d 2>/dev/null
这样写会输出日期,能不不要输出啊
if echo $datestr | grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d $datestr +%Y%m%d 2>/dev/null
这样写会输出日期,能不不要输出啊
#14
if echo $datestr |grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d $datestr +%Y%m%d >/dev/null 2>&1
需要注意的是 现在月份和日期必须输入2位才合法 2010-9-9会认为不合法 要写成2010-09-09
如果你要2010-9-9也合法 那如下改写
if echo $datestr |grep -Eq "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}" && date -d $datestr +%Y%m%d >/dev/null 2>&1
#15
谢谢啊。我就需要2010-09-09是合法的,2010-9-9是非法的。
我现在需要在输入日期不合法的情况下重复输入3次才退出,请大牛帮忙一下。万分感激啊。
我现在需要在输入日期不合法的情况下重复输入3次才退出,请大牛帮忙一下。万分感激啊。