date
获取时间
2022年 02月 13日 星期日 14:30:59 CST
date -u
2022年 02月 13日 星期日 06:31:02 UTC
date -d "日期时间字符串"
返回字符串指定的时间
date -d "2020-02-02" date -d "2020-02-02 13:01:55.123"
以指定格式显示时间
date +%F' '%T date '+%F %T' date +%F" "%T date "+%F %T" # 四者等效,输出:2022-02-13 14:05:17
%F
%Y-%m-%d
%D
%m/%d/%y
%T
%H:%M:%S
date 命令不能直接获取毫秒格式的时间戳
%s ,自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
%s
%N ,这一秒的第几纳秒(000000000-999999999)
%N
结合这两个参数可以获取准确的毫秒时间戳:
echo $[$(date +%s%N)/1000000]
也可以获取 “年-月-日 时:分:秒.毫秒” 的日期时间格式:
date +%F' '%H:%M:%S.%N | cut -b 1-23 date +%F' '%T.%N | cut -b 1-23
获取某个时间周期的起止日期
年
do_date='2021-11-03' year_1st_day=`date -d "$do_date" +%Y-01-01` year_last_day=`date -d "$year_1st_day 1 year -1 day" +%F` echo 当年第一天是:`date -d "$year_1st_day" +%F` echo 当年最后一天是:`date -d "$year_last_day" +%F` echo 上一年第一天是:`date -d "$year_1st_day -1 year" +%F` echo 上一年最后一天是:`date -d "$year_1st_day -1 day" +%F`
季
do_date='2021-11-03' month=`date -d "$do_date" +%m` i=`echo "scale=0; $month / 3.1" | bc` # 月份/3.1 + 1 quarter_num=$[$i+ 1] first_month=$[i * 3 + 1] quarter_1st_day=`date -d "$do_date" +%Y-$first_month-01` quarter_last_day=`date -d "$quarter_1st_day 3 month -1 day" +%F` echo 当季第一天是:`date -d "$quarter_1st_day" +%F` echo 当季最后一天是:`date -d "$quarter_last_day" +%F` echo 上一季第一天是:`date -d "$quarter_1st_day -3 month" +%F` echo 上一季最后一天是:`date -d "$quarter_1st_day -1 day" +%F`
月
do_date='2020-03-03' this_month_1st_day=`date -d "$do_date " +%Y-%m-01` next_month_last_day=`date -d "$do_date 1 month" +%Y-%m-01` echo 当月第一天是:$this_month_1st_day echo 当月最后一天是:`date -d "$next_month_last_day -1 day" +%F` echo 上月第一天是:`date -d "$do_date -1 month" +%Y-%m-01` echo 上月最后一天是:`date -d "$this_month_1st_day -1 day" +%F`
周
以周一作为一周的开始
do_date='2021-11-03' diff_for_last_sunday=$[date -d "$do_date" +%u] # 当天属于一周中的第 n 天 last_sunday=`date -d "$do_date -$diff_for_last_sunday days" +%F` # 往前推 n 天就是上周日 echo 当周周一是:`date -d "$last_sunday 1 days" +%F` echo 当周周日是:`date -d "$last_sunday 7 days" +%F` echo 上周周一是:`date -d "$last_sunday -6 days" +%F` echo 上周周日是:$last_sunday
获取文件的修改时间
date -r 文件名/目录名
设置时间
date -s "2020-02-02 20:02:02"