shell时间处理整理

来源:互联网 发布:悟空crm 旗舰版 源码 编辑:程序博客网 时间:2024/05/18 00:42

关于shell的时间问题:
先看几个小例子

#!/bin/bashv_date=`date`echo "${v_date}"

输出当天日期
这里写图片描述

#!/bin/bashv_date=`date '+%Y-%m-%d'`echo "${v_date}"
#!/bin/bashv_date=`date +%Y-%m-%d`echo "${v_date}"

输出当天日期控制格式为%Y-%m-%d
有无单引号 输出结果一致
这里写图片描述

#!/bin/bashv_date=`date '+%Y-%m-%d' -d "days"`echo "${v_date}"
#!/bin/bashv_date=`date '+%Y-%m-%d' -d 'days'`echo "${v_date}"
#!/bin/bashv_date=`date '+%Y-%m-%d' -d days`echo "${v_date}"

加单双引号和不加单双引号得到的结果是一样的
这里不明白 为什么输出的是明天的日期
这里写图片描述

#!/bin/bashv_date=`date '+%Y-%m-%d' -d 'next monday'`echo "${v_date}"

next monday 的单引号不能去掉,去掉会报错
输出下一个星期一的日期
这里写图片描述

#!/bin/bashv_date=`date '+%Y-%m-%d' -d next-month`echo "${v_date}"
#!/bin/bashv_date=`date '+%Y-%m-%d' -d 'next-month'`echo "${v_date}"

next-month带引号和不带引号结果相同
输出下个月的今天
这里写图片描述

#!/bin/bashv_date=`date '+%Y-%m-%d %A'-d 'next-month'`echo "${v_date}"

输出下个月的今天是星期几
这里写图片描述

#!/bin/bashv_date=`date '+%Y-%m-%d %A'-d '-1 days $1'`echo "${v_date}"

接受输入日期,计算输入日期-1天的星期
$1接受键盘的输入值
这里写图片描述

总结:

date 以默认格式显示当前日期(Fri Nov 18 10:38:07 CST 2011)
date +%Y%m%d 以yyyymmdd格式输出(20111118)
date +”%Y%m%d %A” 以”yyyymmdd 星期”格式输出(20111118 Friday)
date -d “1 day” +%Y%m%d 显示一天后的日期(20111119)
date -d “3 day ago” +%Y%m%d 以指定格式显示3天前的日期
date -d “1 month” +%Y-%m-%d 以指定格式显示一个月后的日期

创建以当前时间为文件名的
mkdir date +%Y%m%d
备份以时间做为文件名的
tar cvf ./htdocsdate +%Y%m%d.tar ./*

%H 小时(00..23)
% I 小时(01..12)
% k 小时(0..23)
% l 小时(1..12)
% M 分(00..59)
% p 显示出AM或PM
% r 时间(hh:mm:ss AM或PM),12小时
% s 从1970年1月1日00:00:00到目前经历的秒数
% S 秒(00..59)
% T 时间(24小时制)(hh:mm:ss)
% X 显示时间的格式(%H:%M:%S)
% Z 时区 日期域
% a 星期几的简称( Sun..Sat)
% A 星期几的全称( Sunday..Saturday)
% b 月的简称(Jan..Dec)
% B 月的全称(January..December)
% c 日期和时间( Mon Nov 8 14:12:46 CST 1999)
% d 一个月的第几天(01..31)
% D 日期(mm/dd/yy)
% h 和%b选项相同
% j 一年的第几天(001..366)
% m 月(01..12)
% w 一个星期的第几天(0代表星期天)
% W 一年的第几个星期(00..53,星期一为第一天)
% x 显示日期的格式(mm/dd/yy)
% y 年的最后两个数字( 1999则是99)
% Y 年(例如:1970,1996等)

0 0
原创粉丝点击