Shell 中常用 Date 日期的计算

2023-11-17

在使用 Crontab 定时任务和 Shell 脚本切割 Nginx 日志文件时,要用到时间戳、当月、上月、下月、上月初、上月末、下月初、下月末等等,其中有些日期不能直接获取,需要经过一定的计算才能得到。

Shell Date

一、Date 基础格式化

格式 输出 含义
date 2022年 11月 15日 星期二 19:10:21 CST 当前日期和时间
date +%Y 2022
date +%y 22
date +%m 11
date +%d 15
date +%D 11/15/22 当前日期
date +%Y%m%d 20221115 当前日期
date +%F 2022-11-15 当前日期
date +%H 19
date +%M 20
date +%S 30
date +%s 1668511253 时间戳
date +%T 19:21:26 时分秒
date +%H:%M:%S 19:21:26 时分秒
date +%w 2 今天是周二
date +%W 46 今年的第46周
cal (当月日历) 当月日历

二、Date 日期计算

当前日期:2022-11-15

  • 前一天
date -d "-1 day"
# 2022年 11月 14日 星期一 19:34:01 CST

date -d "-1 day" +%F
# 2022-11-14

date -d "last day" +%F
# 2022-11-14
  • 前三天
date -d "-3 day" +%F
# 2022-11-12
  • 后一天
date -d "1 day" +%F
# 2022-11-16

date -d "next day" +%F
# 2022-11-16
  • 上一月
date -d "-1 month" +%F
# 2022-10-15

date -d "last month" +%Y%m
# 202210
  • 下一月
date -d "1 month" +%F
# 2022-12-15

date -d "next month" +%Y-%m
# 2022-12
  • 上一年
date -d "-1 years" +%F
# 2021-11-15

date -d "last year" +%Y%m
# 202111
  • 时间戳转日期
date -d @1621563928
# 2021年 05月 21日 星期五 10:25:28 CST
  • 日期转时间戳
date +%s -d "2022-10-21 10:38:48"
# 1666319928
  • 当月末日期和当月天数:先获取下个月第一天,减去一天
nextMonthStart=`date -d "${date} +1 month" "+%Y%m01"`
currMonthEnd=`date -d "${nextMonthStart} -1 day" "+%F"`
currMonthDays=`date -d "${nextMonthStart} -1 day" "+%d"`
echo $currMonthEnd
# 2022-11-30

echo currMonthDays
# 30

欢迎访问:天问博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Shell 中常用 Date 日期的计算 的相关文章

  • Linux shell 脚本:十六进制数字到二进制字符串

    我正在 shell 脚本中寻找一些简单的方法来将十六进制数字转换为 0 和 1 字符的序列 Example 5F gt 01011111 是否有任何命令或简单的方法来完成它 或者我应该为其编写一些开关 echo ibase 16 obase
  • 将“npm run start”的输出写入文件

    我想捕获的输出npm run start在一个文件中 我遇到了大量错误 我想更好地控制如何筛选输出 当我尝试时 npm run start gt log txt 我得到一个非常简短的文件 8 行 其结尾为 34m 39m 90m wdm 3
  • Nginx - Heroku Docker - 是否可以在 Heroku 上运行 Nginx 作为反向代理

    我试图弄清楚如何使用 Nginx 在 Heroku 应用程序上构建反向代理 问题是 Heroku 似乎每个应用程序只接受一个容器 但我的应用程序系统至少会使用三个容器 一个用于 Nginx 一个用于我的应用程序前端 一个用于我的业务逻辑服务
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • Composer 安装要求

    我正在尝试将 Composer 安装到 Laravel 项目中 当我做的时候sudo composer install在项目目录中它显示了两个错误 Problem 1 Installation request for simplesoftw
  • 在 Fish Shell 中设置导出

    我安装了多个版本的 PHP 对于我的正常开发 我总是使用通过自制程序安装的 PHP 5 5 x 在鱼壳里 which php php version gt usr local bin php gt PHP 5 5 8 cli built J
  • 如何使用 bash 显示具有两个子文件夹的文件夹?

    我通过 Cygwin 使用 bash 我有一个大文件夹 a 有很多子文件夹 b 这些子文件夹各有一个或两个子文件夹 c 我想找到所有有两个子文件夹 c 的子文件夹 b 并输出它们 结构如下 a b1 c1 b2 c1 c2 b3 c1 c2
  • 如何使用 sed 仅删除双空行?

    我找到了这个问题和答案 https stackoverflow com questions 4651591 howto use sed to remove only triple empty lines关于如何删除三重空行 但是 我只需要对
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • 抑制 nginx 访问被拒绝错误日志

    我在 nginx 中设置了一些规则来拒绝 IP 访问 这很有效 但对于来自被拒绝 IP 的每个请求 都会记录以下开头的错误 error 7325 0 5761 access forbidden by rule client 有没有办法抑制这
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • Locale.getDefault() 始终返回 en

    unix 机器上的服务器始终使用 en 作为默认区域设置 以下是区域设置输出 LANG en US LC CTYPE C LC NUMERIC C LC TIME C LC COLLATE C LC MONETARY C LC MESSAG
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • 在 bash 中使用单个命令为 shell 变量分配默认值

    我对 bash 3 00 shell 脚本中的变量进行了大量测试 如果未设置变量 则它会分配默认值 例如 if z VARIABLE then FOO default else FOO VARIABLE fi 我似乎记得有一些语法可以在一行

随机推荐

  • WSUS服务器的详细配置和部署-转载

    WSUS服务器的详细配置和部署 一 WSUS 安装要求1 硬件要求 对于多达 500 个客户端的服务器 建议使用以下硬件 1 GHz 的处理器 1 GB 的 RAM2 软件要求 要使用默认选项安装 WSUS 必须在计算机上安装以下软件 Mi
  • 西瓜+南瓜-task1 模型评估与选择

    题外话 南瓜书是西瓜书公式的进一步深入 机器学习研究什么 对历史经验的归纳总结 预测 比如 早霞不出门晚霞行千里 通过历史累计 经验 预测第二天是晴天还是雨天 此处的 经验 类似于历史数据 通过学习数据 或者训练数据 提前预判 这就是机器学
  • 详细版mongodb下载安装教程----windows版

    一 详细下载过程 1 官网选择需要的版本 Download MongoDB Community Server MongoDB 2 然后得到这个 双击它 3 打开第一个就是这个界面 点next即可 4 第二个界面 点同意 点next 5 点c
  • 世界杯十大巨星

    随着南非世界杯开幕日期一天天临近 近日 英媒 泰晤士报 评选出了世界杯历史上10名最伟大的球星 马拉多纳力压贝利排名榜首 现役球员中 仅罗纳尔多入选并排名第八 一 马拉多纳 在这个地球上 几乎没有球员 可以让其职业生涯 甚至人生 在短短3分
  • 数字万用表的使用

    参考 连3岁小孩子都能看懂的万用表使用方法 地址 https www bilibili com video BV1Gx411z7x2 p 1 vd source cc0e43b449de7e8663ca1f89dd5fea7d 目录 万用表
  • IDEA中使用UT测试过程中的一些小问题

    当查看代码覆盖率结果 快捷键Ctrl Alt F6 当运行测试查看代码覆盖率的时候 出现如下图所示的界面 No coverage results Click Edit to fix configuration settings 解决办法就是
  • 【区块链学习】Merkle Patricia Tree (MPT) 以太坊中的默克尔树

    本篇博文是自己学习mpt的过程 边学边记录 很多原理性内容非自己原创 好的博文将会以链接形式进行共享 一 什么是mpt MPT是以太坊中的merkle改进树 基于基数树 即前缀树改进而来 大大提高了查找效率 二 前缀树 MPT中的P 就是前
  • Linux 中的 cd 命令及示例

    cd命令在Linux 中称为更改目录命令 它用于有效地从当前工作目录移动到系统中的不同目录 Linux 中 cd 命令的语法 光盘 目录 cd directory 在这里 将 directory 替换为您要导航到的目标目录的路径 cd 命令
  • STM32的I/O口的8种工作模式

    转自http www openedv com posts list 21980 htm 浮空 顾名思义就是浮在空中 上面用绳子一拉就上去了 下面用绳子一拉就沉下去了 开漏 就等于输出口接了个NPN三极管 并且只接了e b c极 是开路的 你
  • 机械臂颜色识别案例

    大家好 我就是那个走在路上经常捡到宝的铁熊老师 那么今天捡到了啥好玩的东西呢 一台五自由度机械臂 从天而降出现在我面前 这话说出口 我自己都不信 哪有那么好的运气 其实这是朋友送我玩的 你也想要这台机械臂么 什么 你不要机械臂 你想要那个朋
  • C++ 游戏开发 打地鼠详解 (含.h文件和.cpp文件)

    基于easyx的打地鼠游戏 期末大作业 C语言版本请见 C语言 打地鼠游戏 超级详解 各个函数与算法 设计思路与流程 一 游戏简介 游戏简介 疯狂打地鼠 是一款经典的单机休闲益智类小游戏 调皮的小地鼠们又出来活动了 你需要做的就是将他们砸回
  • 关于Chrome浏览器这点儿事儿(一):基本尝试修改Chrome启动参数实现全屏禁用双指触摸缩放

    最近 刚上任项目boss 接触客户第一个需求便是浏览器需求 需求如下 其中标注红色的需求 是让我花了几十种方式尝试的主要源 自己做过C 知道可以嵌入外壳 有很多种方案 当然了参考了一位仁兄的文章 https www cnblogs com
  • 二进制安装mysql

    下载安装包 下载mysql二进制安装包 yum y install lrzsz numactl wget http mirrors 163 com mysql Downloads MySQL 5 7 mysql test 5 7 38 li
  • error C2676: 二进制“<”:“const _Ty”不定义该运算符或到预定义运算符可接收的类型的转换

    项目场景 C 中写优先级序列 序列内存的是自定义的结构体 在自定义比较方式的时候系统报错 error C2676 二进制 lt const Ty 不定义该运算符或到预定义运算符可接收的类型的转换 with Ty Node 问题描述 prie
  • Javascript使用turndown 将html 转为md

    1 安装turndown npm i turndown 2 使用trundown并保存为md文件 htmlToMarkdown let down new turndown let md down turndown this html let
  • bin、hex、elf、axf文件解析

    冰冻三尺非一日之寒 滴水穿石非一日之功 文章目录 引言 文件分类 1 bin文件 2 hex文件 3 axf文件 4 elf文件 总结 参考资料 深度理解编译过程 参考资料 深度理解编译文件 引言 bin hex elf axf作为嵌入式开
  • python数据可视化07

    1 绘制等高线图 import numpy as np import matplotlib pyplot as plt def calcu elevation x1 y1 h 1 x1 2 x1 5 y1 3 np exp x1 2 y1
  • 每日一题: 扑克牌中的顺子(C++)

    题目描述 从扑克牌中随机抽5张牌 判断是不是一个顺子 即这5张牌是不是连续的 2 10为数字本身 A为1 J为11 Q为12 K为13 而大 小王为 0 可以看成任意数字 A 不能视为 14 示例 1 输入 1 2 3 4 5 输出 Tru
  • Torchserve打包和部署你训练的深度学习模型

    一 Torchserve介绍 Torchserve是Facebooke公司开发的在线深度学习模型部署框架 它可以很方便的部署pytorch的深度学习模型 读者可以访问Github地址获取最新功能和详细说明 官方地址https github
  • Shell 中常用 Date 日期的计算

    在使用 Crontab 定时任务和 Shell 脚本切割 Nginx 日志文件时 要用到时间戳 当月 上月 下月 上月初 上月末 下月初 下月末等等 其中有些日期不能直接获取 需要经过一定的计算才能得到 一 Date 基础格式化 格式 输出