(一)接受一个输入,判断是不是一个日期,用户的输入可以是2017-10-1 或 2017.10.1 或2017/10/1
shell代码如下
1
2
3
4
5
6
7
8
9
10
|
#!/bin/bash
read
-p
"Input:"
date
a=`
echo
$
date
|
awk
-F
'[./-]'
'{print $1"/"$2"/"$3}'
`
date
-d $a &>
/dev/null
if
[ $? -
eq
0 ];
then
echo
"ok"
else
echo
"no"
fi
|
(二)将日期写入一个文本,判断这个文本中的日期分别是这一年的哪一天。
例如
[root@localhost ding1]# cat file1
2017-10-1
2016-2-2
2017-1-1
[root@localhost ding1]#
shell代码如下
1
2
3
4
5
6
7
8
9
10
11
12
|
str () {
# a=`echo $line | tr '/.-' '/'`
a=`
echo
$line |
awk
-F
"[./-]"
'{print $1"/"$2"/"$3}'
`
date
-d $a +%j
}
#set -x
cat
file1 |
while
read
line
do
str
done
#set +x
|
简单的date 命令总结:
date -d <字符串> :显示自符串所指的日期与时间。字符串前后加上双引号,好像有的不加也可以,具体情况具体分析
例如:
[root@localhost ding1]# date -d 2017-1-1 +%j #加%j 表示该年中的第几天
001
[root@localhost ding1]# date -d +%j
date: 无效的日期"+%j"
[root@localhost ding1]#
也就是说date -d 后面必须指定一个字符串。
[root@localhost ding1]# date -d 2017-1-1 #显示字符串所指的时间与日期
2017年 01月 01日 星期日 00:00:00 CST
[root@localhost ding1]#
date +%F 显示当前的时间,(年-月-日),例如:
[root@localhost ding1]# date +%F
2017-10-05
[root@localhost ding1]#
+%F 就相当于+%y-%m-%d
例如:
[root@localhost ding1]# date +%y-%m-%d
17-10-05
[root@localhost ding1]# date +%y*%m*%d #中间的符号自己定义
17*10*05
[root@localhost ding1]#
例如我要显示下个月和下一年的今天
[root@localhost ding1]# date -d +1month +%y-%m-%d
17-11-05
[root@localhost ding1]# date -d +1year +%F
2018-10-05
[root@localhost ding1]#
date -s <字符串>:根据字符串来设置日期与时间,只有root权限才能设置,其他只能查看。字符串前后加上双引号
[root@localhost ding1]# date
2017年 10月 05日 星期四 10:21:52 CST
[root@localhost ding1]# date -s 2012-5-23 01:01:10
date: 参数"01:01:10" 缺少前导的"+";
当使用选项来描述日期是,任何非选项参数都必须以"+"所引导的字符串出现
请尝试执行"date --help"来获取更多信息。
[root@localhost ding1]# date -s "2012-5-23 01:01:10" #这个地方加上双引号
2012年 05月 23日 星期三 01:01:10 CST
[root@localhost ding1]# date
2012年 05月 23日 星期三 01:01:13 CST
[root@localhost ding1]#
本文转自 大雪儿 51CTO博客,原文链接:http://blog.51cto.com/dingxue/1970420,如需转载请自行联系原作者