linux 命令 date 时间使用详解
date 获取当前时间
# date获取当前时间
date
Mon Jul 31 16:32:43 CST 2023
# date获取当前时间的 时间戳
date +%s
1690792469
# date获取当前时间的 字符串
date '+%Y-%m-%d %H:%M:%S'
2023-07-31 16:35:18
# date获取当前时间的 字符串 同时显示时区
date '+%Y-%m-%d %H:%M:%S %Z %z'
2023-07-31 16:41:26 CST +0800
date 时间 => 时间戳
# date获取当前时间 => 时间戳
date +%s
1690792648
# date获取指定时间 => 时间戳
date +%s -d '2023-07-18 12:00:00'
1689652800
date 时间戳 => 时间
# date时间戳转换 不格式化时间串
date -d @1690792648
Mon Jul 31 16:37:28 CST 2023
# date时间戳转换 同时格式化时间
date -d @1690792648 '+%Y-%m-%d %H:%M:%S'
2023-07-31 16:37:28
# date时间戳转换 同时格式化时间 同时显示时区
date -d @1690792648 '+%Y-%m-%d %H:%M:%S %Z %z'
2023-07-31 16:37:28 CST +0800
date 时间的加减
可以使用-d
选项来加减时间操作。-d
选项允许你指定一个日期时间字符串,然后通过加减不同的时间间隔来获得新的日期时间,里面的数字可以是正负,负数表示减,正数表示加,下面是详细的示例:
当前日期时间加减操作
对当前日期的加减 years month days weeks hours minutes seconds 都可以。
# 加2小时
date -d "2 hours"
# 减3天
date -d "-3 days"
# 加1周
date -d "1 week"
# 加1个月
date -d "1 month"
# 加1年
date -d "-1 year"
# 加60分钟
date -d "60 minutes"
# 加60秒钟
date -d "60 seconds"
指定日期时间加减操作
当前日期的加减 years month days weeks hours minutes seconds 都可以。
# 在当前日期时间上加3小时
date -d "now +3 hours"
# 在当前日期时间上减2天
date -d "now -2 days"
# 在当前日期时间上减1天
date -d "now -1 days"
指定日期的加减 years month days weeks hours minutes seconds 都可以。注意:由于指定日期时间有空格,不能向上面一样使用正负号表示加减,加直接使用正数,减必须使用 xxx ago 的形式
# 在指定日期时间上加10天
date -d "2023-07-04 12:34:56 10 days"
Fri Jul 14 12:34:56 CST 2023
# 在指定日期时间上减10天
date -d "2023-07-04 12:34:56 10 days ago"
Sat Jun 24 12:34:56 CST 2023
# 在指定日期时间上加1个月
date -d "2023-02-28 12:34:56 1 month"
Tue Mar 28 12:34:56 CST 2023
# 在指定日期时间上减1个月
date -d "2023-03-29 12:34:56 1 month ago"
Wed Mar 1 12:34:56 CST 2023
时间戳上进行加减操作
为了避免计算过程中的误差,可以使用date +%s
命令获取当前的时间戳,并在其基础上进行加减操作。
# 在当前时间戳上加3600秒(1小时)
date -d "@$(($(date +%s) + 3600))"
# 在当前时间戳上减86400秒(1天)
date -d "@$(($(date +%s) - 86400))"
# 在指定时间戳上加604800秒(1周)
date -d "@$((1677513296 + 604800))"
时间加减的同时格式化
对时间加减后,只需要在最后指定格式化字符串即可
# 指定时间减 2 个月
date -d "2023-03-29 12:34:56 2 month ago" '+%Y-%m-%d %H:%M:%S'
2023-01-29 12:34:56
# 当前时间加 10 天:格式化
date -d "now +10 days" '+%Y-%m-%d %H:%M:%S'
2023-08-10 17:30:05
# 当前时间加 10 天:不格式化
date -d "now +10 days"
Thu Aug 10 17:30:37 CST 2023
date 获取星期几周几
# 获取星期几可以使用 %u %a %A 比如今天是周一,下面是获取当前日期的周几
date +%a # Mon
date +%A # Monday
date +%u # 1
# 获取指定时间日期的星期几周几
date -d "2023-07-12 17:39:07" +%a # Wed
date -d "2023-07-12 17:39:07" +%A # Wednesday
date -d "2023-07-12 17:39:07" +%u # 3
在线时间戳转换
我写了一个在线时间戳转换的网站,欢迎访问 https://goldtools.cn/codec