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

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet