本文汇总了Linux shell中各种时间处理方法,包括时间显示、时间转换、时间设置等等,内含大量示例及输出, 这里记录下来作为备忘,持续更新,禁止转载。内容比较多,可以直接CTRL+F查找。
1. 显示当前时间,按指定格式显示时间。
date //显示当前时间,输出结果:Tue Mar 7 22:13:22 CST 2017
date +"%Y/%m/%d %H:%m:%S" //显示指定格式时间,输出结果:2017/03/07 22:03:05
//日期格式化符号说明如下:(原文地址:https://vimsky.com/article/1629.html)
%% 显示一个百分号'%'。
%a 星期的简称, 如:Sun/Mon/Tue/Wed/...。
%A 星期完整名字,如:Sunday/Monday/...。
%b 月份简称,如:Jan/Feb/...。
%B 月份全称,如: January/February。
%c 显示当前日期和时间,如:Thu Mar 3 23:05:25 2005。
date等同于date +"%c"。
%C 世纪,如:现在是20世纪, 输入date +"%C"显示20。
%d 日期,如当前是8号,则显示:08。
%D 完整日期,date +"%D"相当于date +"%m/%d/%y", 如:03/07/17(2017年3月7号)。
%e 日期,用空格补全,而不是0, 如当前日期:7号,则显示" 7"。date +"%e" 相当于 date +"%_d"
%F 完整日期,相当于:date +"%Y-%m-%d", 输出:2017-03-07。
%g 年份后2位,如果是2017, 则为:17。
%G 年份全4位,如2017。
%h 月份简称,如:Jan/Feb/Mar, 跟%b相同。
%H 小时 (00/01/02/..23),24小时制。
%I 小时 (01/02/..12), 12小时制。
%j 一年的第几天 (001/002/..366)。
%k 小时,填充空格, 如 ( 0/ 1/ 2/..23); 相当于%_H。
%l 小时, 填充空格 ( 1/ 2/ 3/ ..12); 相当于 %_I。
%m 月份 (01/02/03/..12)。
%M 分钟(00/01/02/..59)。
%n 换行。date +"%d%n%d", 将会分成两行分别显示日期。
%N 纳秒 (000000000/000000001/..999999999)。
%p AM/PM, 即上午或者下午。
%P 跟%p意思一样, 不过是小写字母,即am/pm。
%r 显示12小时制的当前时间,如:10:48:05 PM。
%R 24小时制的当前时间和分钟,相当于: %H:%M,22:49。
%s 从1970-01-01 00:00:00 UTC开始的秒数,如:1488898232(对应时间:Tue Mar 7 22:50:32 CST 2017),相当于日期转时间戳。
%S 秒 (00/01/02/..60)。
%t 一个tab键,制表符。
%T 当前时间,相当于: %H:%M:%S。如:22:52:07。
%u 星期中的第几天 (1/2/..7); 1是星期一。
%U 一年中的第几个星期(00..53),星期天作为一个星期的第一天。
%V 一年中的第几个星期(ISO标准)(01..53),星期一作为一个星期的第一天。
%w 星期中的第几天 (0..6); 0是星期天。
%W 一年中的第几个星期 (00..53),星期一作为一个星期的第一天。
%x 当前日期 (例如: 03/07/17)。
%X 当前时间(例如: 23:13:48)。
%y 年的后两位 (00/02/..99)。
%Y 年,如:2017。
%z +hhmm 数字时区(例如:北京:+0800)。
%:z +hh:mm 数字时区(例如:北京:+08:00)。
%::z +hh:mm:ss 数字时区 (例如:北京:+08:00:00)。
%:::z numeric time zone with : to necessary precision (e.g., -04, +05:30)。
%Z 字母时区缩写 (如, CST)。
2. 时间数字转字符串,时间整数转字符串,时间戳转字符串,数字和字符串时间转换。
date --date @1488899583 //将从1970-01-01 00:00:00 UTC开始的秒数,转为字符串时间,1488899583这个整数秒转为字符串时间:Tue Mar 7 23:13:03 CST 2017。
date --date @"1488899583" //同上,即时间戳转字符串,或者整数秒转字符串时间。
date +"%s" //日期转时间戳,日期转整数。原文地址:https://vimsky.com/article/1629.html
3. 设置当前时间
date -s "2017/05/08 23:28:13" //设置日期和时间。(原文地址:https://vimsky.com/article/1629.html)
date -s "2017/05/08" //设置日期(注意,时间会同时被设置为00:00:00,慎用)。
date -s "23:28:13" //设置时间。
4. 时间解析,将输入的字符串解析为时间
date -d "20170305" //解析日期, 输出:Sun Mar 5 00:00:00 CST 2017。
date -d "03/05/2017" //解析日期,输出同上。原文地址:https://vimsky.com/article/1629.html
date -d "2017/03/05 11:12:13" //解析日期和时间, 输出: Sun Mar 5 11:12:13 CST 2017。
date -d "2017-03-05 21:12:17" +"%s" //将输入时间转为时间戳,输出:1488719537。
date -d "2017-03-05 21:12:17" +"%Y/%m/%d %H:%M:%S" //时间格式转换,将输入日期转换为自定义格式。
5. 时间运算,时间加减运算
//时间加减运算,可以直接用-d命令结合year/month/day/hour/minute/second, 单复数都行
date -d "+1 days" //明天,当前时间加1天。
date -d "+2 days" //后天,当前时间加2天。
date -d "+15 days" //半个月之后,当前时间+15天。
date -d "+10 days" +"%Y%m%d %H:%M:%S" 当前时间加10天,并按指定格式输出。
date -d "-1 days" //昨天,当前时间减1天。
date -d "-2 days" //前天,当前时间减2天。
date -d "2017/03/05 +1 days" //指定日期加1天。
date -d "2017/03/05 -1 days" //指定日期减1天。
date -d "2017/03/08 +600 seconds" //指定日期加600秒。
date -d "2017/03/08 -600 seconds" //指定日期减600秒。
date -d "2017/03/08 +600 minutes" //指定日期加600分钟。
date -d "2017/03/08 -600 minutes" //指定日期减600分钟。
date -d "2017/03/08 +10 year" //指定日期加10年。
date -d "Tue Mar 10 14:12:13 CST 2015 +1 days" //指定日期时间,加一天。
date -d "15:21:11 03/18/2017 -1 days" //指定日期时间,减一天。注:时间放在日期的后面目前似乎不可用。
6. 待续。。。
本文 《Linux shell时间处理大全》 由纯净的天空收集整理,持续更新,欢迎收藏,禁止转载。