📜  shell 中的日期时间计算 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:20:07.715000             🧑  作者: Mango

Shell 中的日期时间计算

在 shell 脚本中,经常需要对日期时间进行计算和格式化。本文将介绍如何在 shell 中进行日期时间计算和格式化。

获取当前时间
date 命令

date 命令用于获取系统时间。

date

示例输出:

Thu Nov  5 17:38:52 CST 2020

可以使用 date 命令的格式化选项,将时间格式化输出。例如,输出年、月、日:

date +%Y-%m-%d

示例输出:

2020-11-05

更多 date 命令的格式化选项,可以参考 date 命令的帮助文档。

使用变量获取时间

使用 date 命令可以获取系统时间,也可以将其存储到变量中,以便后续使用。

current_time=$(date +%Y-%m-%d_%H:%M:%S)
echo $current_time

示例输出:

2020-11-05_17:38:52
在日期时间上进行计算

在 shell 中,可以通过 date 命令和其他工具对日期时间进行计算。

计算时间差

使用 date 命令可以计算两个日期之间的时间差。以下是一个计算两个时间点之间的秒数的示例:

start_time=$(date +%s)
sleep 3
end_time=$(date +%s)
echo $((end_time - start_time))

示例输出:

3
计算日期差

使用 date 和其他工具如 bc 可以计算两个日期之间的天数。

以下是计算两个日期之间间隔的天数的示例:

start_date="2020-11-01"
end_date="2020-11-05"
start_seconds=$(date -d "$start_date" +%s)
end_seconds=$(date -d "$end_date" +%s)
diff_seconds=$((end_seconds - start_seconds))
diff_days=$(echo "scale=0;$diff_seconds/60/60/24" | bc)
echo $diff_days

示例输出:

4
格式化日期时间

使用 date 命令的格式化选项可以实现对时间格式的控制。

以下是将当前时间格式化输出为年月日、时分秒、毫秒等的示例:

# 年月日
date +%Y-%m-%d

# 时分秒
date +%H:%M:%S

# 毫秒
date +%N

示例输出:

2020-11-05
17:38:52
277000000

可以将多个格式化选项组合使用。以下是将当前时间格式化输出为年月日时分秒的示例:

date "+%Y-%m-%d %H:%M:%S"

示例输出:

2020-11-05 17:38:52
总结

在 shell 脚本中,我们可以使用 date 命令和其他工具对日期时间进行计算和格式化。我们可以计算时间差、日期差等,也可以将时间格式化输出为我们想要的格式。