📜  bash 日期 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:59:29.681000             🧑  作者: Mango

概述

Shell 脚本是在 Linux/Unix 操作系统上常用的自动化脚本语言,它可以通过执行一条条命令实现一系列特定功能。日期操作是 Shell 脚本中经常使用的功能,本篇文章将向您介绍 bash 中的日期操作相关的知识和技巧。

日期格式

在 bash 中,日期可以采用不同的格式表示。下面是一些常见的日期格式:

  • %Y 年份,四位数
  • %m 月份,两位数
  • %d 日期,两位数
  • %H 小时,24小时制
  • %M 分钟,两位数
  • %S 秒数,两位数

获取当前时间

获取当前时间可以使用 date 命令,如下所示:

#!/bin/bash

now=$(date "+%Y-%m-%d %H:%M:%S")
echo "当前时间为:$now"

以上代码将会输出当前时间,格式为 YYYY-mm-dd HH:MM:SS,如下所示:

当前时间为:2021-08-02 10:25:06

时间戳转日期

时间戳是从 Unix 纪元(1970年1月1日00:00:00 UTC) 到当前时间所经过的秒数。在 bash 中,可以使用 date 命令将时间戳转换为日期,如下所示:

#!/bin/bash

timestamp="1627893903"
date=$(date -d @$timestamp "+%Y-%m-%d %H:%M:%S")
echo "时间戳 $timestamp 转化为日期为:$date"

以上代码将会输出时间戳 1627893903 对应的日期,格式为 YYYY-mm-dd HH:MM:SS,如下所示:

时间戳 1627893903 转化为日期为:2021-08-02 10:25:03

日期转时间戳

在 bash 中,同样可以使用 date 命令将日期转换为时间戳,如下所示:

#!/bin/bash

date="2021-08-02 10:25:03"
timestamp=$(date -d "$date" +%s)
echo "日期 $date 转换为时间戳为:$timestamp"

以上代码将会输出日期 2021-08-02 10:25:03 对应的时间戳,如下所示:

日期 2021-08-02 10:25:03 转换为时间戳为:1627893903

获取指定日期的前一天或后一天

在 bash 中,可以使用 date 命令获取指定日期的前一天或后一天,如下所示:

#!/bin/bash

# 获取前一天
date=$(date -d "yesterday" "+%Y-%m-%d")
echo "昨天的日期为:$date"

# 获取后一天
date=$(date -d "tomorrow" "+%Y-%m-%d")
echo "明天的日期为:$date"

以上代码将会输出昨天和明天对应的日期,格式为 YYYY-mm-dd,如下所示:

昨天的日期为:2021-08-01
明天的日期为:2021-08-03

获取指定日期的前几天或后几天

除了获取指定日期的前一天或后一天之外,还可以获取指定日期的前几天或后几天。在 bash 中,可以使用 -d 参数表示指定日期,再通过 +/- 和数字来表示前几天或后几天,如下所示:

#!/bin/bash

# 获取 2 天前的日期
date=$(date -d "2 days ago" "+%Y-%m-%d")
echo "2 天前的日期为:$date"

# 获取 3 天后的日期
date=$(date -d "3 days" "+%Y-%m-%d")
echo "3 天后的日期为:$date"

以上代码将会输出指定日期前 2 天和后 3 天对应的日期,格式为 YYYY-mm-dd,如下所示:

2 天前的日期为:2021-07-31
3 天后的日期为:2021-08-05

总结

通过本篇文章,您学习了在 bash 中,如何获取当前时间、将时间戳转换为日期、将日期转换为时间戳和获取指定日期的前几天或后几天等操作。只要掌握了这些技巧,您将可以轻松处理日期操作。