已复制
全屏展示
复制代码

linux 命令 date 时间使用详解


· 4 min read

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

🔗

文章推荐