📅  最后修改于: 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 中,如何获取当前时间、将时间戳转换为日期、将日期转换为时间戳和获取指定日期的前几天或后几天等操作。只要掌握了这些技巧,您将可以轻松处理日期操作。