Linux date命令 日期格式化与计算

2024-09-07 17:12

本文主要是介绍Linux date命令 日期格式化与计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考资料

  1. 8.4.7 dateコマンド(システムの日付と時刻を表示する)
  2. 【Linux】dateコマンドで日付フォーマットの変更及び日付計算の方法
  3. date コマンド

目录

  • 一. 基本语法
    • 1.1 -d 选项
    • 1.2 格式化
  • 二. 年月日格式化
  • 三. 日计算
    • 3.1 一天之前
    • 3.2 一天之后
  • 四. 月计算
    • 4.1 两个月前的月初
    • 4.2 两个月后的月初
    • 4.3 指定月份的最后一天
    • 4.4 指定月份下个月的最后一天
    • 4.5 指定月份的上个月的月末
    • 4.6 指定月份的上上个月的月末
  • 五. 周计算
    • 5.1 获取指定日期是周几
    • 5.2 指定日期在当年度是第几个周
    • 5.3 当前日期的下个周一
    • 5.4 下个周的今天
  • 六. 小案例
    • 6.1 输出指定期间内的所有日期
    • 6.2 输出指定期间后100天的所有日期


一. 基本语法

1.1 -d 选项

  • 用于显示或处理指定的日期和时间字符串
  • 可以将输入的日期字符串转换为不同的格式,也可以用于日期计算。

1.2 格式化

基本用法

格式说明
%Y西历4位年(1970〜)
%y西历2位年(00〜99)
%m月(01〜12)
%-m月(1〜12)
%b月份名的简略显示(Jan~Dec)
%B月份名(January 〜 December)
%d日(01〜31)
%-d日(1〜31)
%H时(24小时形式、00〜23)
%-H时(24小时形式、0〜23)
%I时(12小时形式、01〜12)
%-I时(12小时形式、1〜12)
%M分(00〜59)
%S秒(00〜59)
%a星期的简略名称(Sun, Mon, Tue, Wed, Thu, Fri, Sat)
%A星期名称(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
%u星期数字(1:周一 〜 7:周日)

其他用法

格式说明
%D%m/%d/%y 的简写形式 ⇒ 09/06/24
%F%Y-%m-%d 的简写形式 ⇒ 2024-09-06
%R%H:%M 的简写形式 ⇒ 20:23
%T%H:%M:%S 的简写形式 ⇒ 20:25:54

二. 年月日格式化

# ⏹YYYY-mm-dd
date "+%F"
# 2024-09-06# ⏹mm/dd/YY
date "+%D"
09/06/24# ⏹YYYY/mm/dd HH:MM:SS
date "+%Y/%m/%d %H:%M:%S"
# 2024/09/06 20:46:09

三. 日计算

3.1 一天之前

date '+%Y-%m-%d' -d 'yesterday'
date '+%Y%m%d' -d '1 day ago'
date '+%Y%m%d' -d '-1 days'
# 20240905

3.2 一天之后

date '+%Y-%m-%d' -d '1 day'
# 2024-09-07date '+%Y%m%d' -d 'tomorrow'
# 20240907

四. 月计算

4.1 两个月前的月初

  • monthmonths 的这两种形式都可以。
date '+%Y-%m-01' -d '-2 months'
# 2024-07-01date '+%Y%m01' -d '2 month ago'
# 20240701

4.2 两个月后的月初

date '+%Y-%m-01' -d '2 months'
# 2024-11-01

4.3 指定月份的最后一天

  • 指定月份的月初 + 1个月,变为下个月的月初
  • 然后取前一天,变为指定月份的月末
my_month='06'
date '+%Y%m%d' -d "2024${my_month}01 +1 month -1 day"
# 20240630

4.4 指定月份下个月的最后一天

my_month='06'
date '+%Y%m%d' -d "2024${my_month}01 +2 month -1 day"
# 20240731

4.5 指定月份的上个月的月末

my_month='06'
date '+%Y/%m/%d' -d "2024/${my_month}/01 -1 day"
# 2024/05/31

4.6 指定月份的上上个月的月末

my_month='06'
date '+%Y%m%d' -d "2024/${my_month}/01 -1 month -1 day"
# 20240430

五. 周计算

5.1 获取指定日期是周几

  • %A:星期名称
date -d "2024-09-01" +%A
# Sunday
  • %u:星期数字
date -d "2024-09-04" +%u
# 3

5.2 指定日期在当年度是第几个周

  • %U:表示周号,从每年的第一个周日开始计算。
date -d "2024-09-01" +%U
# 35

5.3 当前日期的下个周一

date '+%Y-%m-%d' -d 'next Monday'
# 2024-09-09

5.4 下个周的今天

date '+%Y-%m-%d' -d 'next week'
date '+%Y-%m-%d' -d '1 week'
# 2024-09-13

六. 小案例

6.1 输出指定期间内的所有日期

⏹输出2016-10-01 到 2016-12-31 范围内的所有日期

my_day="2016-10-01"while [[ "${my_day}" < "2017-01-01" ]]; doecho $my_daymy_day=$(date +%F -d "$my_day 1 day")
done
# 2016-10-01
# 2016-10-02
# 2016-10-03
# 2016-10-04
# 2016-10-05
# 2016-10-06
# 2016-10-07
# 。。。省略。。。

6.2 输出指定期间后100天的所有日期

for day_num in $(seq 0 100); doecho $(date -d "2020/04/01 + $day_num days" +%Y/%m/%d)
done
# 2020/04/01
# 2020/04/02
# 2020/04/03
# 2020/04/04
# 2020/04/05
# 2020/04/06
# 。。。省略。。。

这篇关于Linux date命令 日期格式化与计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145655

相关文章

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa