Datetime,一个 Python 的时间掌控者

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。

一个简单的库,也许能够开启我们的智慧之门,
一个普通的方法,也许能在危急时刻挽救我们于水深火热,
一个新颖的思维方式,也许能激发我们无尽的创造力,
一个独特的技巧,也许能成为我们的隐形盾牌……


神奇的 Python 库之旅,第 7

目录

    • 一、Datetime 简介
    • 二、Datetime 编程示例
    • 三、小结
    • 四、作者Info

一、Datetime 简介

在编程世界里,处理时间是必不可少的任务,今天,我们将一起探讨 Python 标准库中的“时间掌控者”—— datetime 模块。在这个过程中,我们不仅会了解其强大的功能,还会通过多个有趣的代码示例,逐步揭开它的神秘面纱。准备好了吗?让我们一起开始这段奇妙的时光之旅吧!

这个模块包含了处理日期和时间的类和方法,它能帮我们完成从获取当前时间到日期运算等各种任务。让我们先从导入这个模块开始:

import datetime

简单明了,接下来,我们逐一探索它的一些实用功能。

在这里插入图片描述

二、Datetime 编程示例

获取当前时间
首先,我们来获取当前的日期和时间。datetime 模块中的 datetime 类可以轻松完成这一任务:

from datetime import datetime

# 获取当前时间
now = datetime.now()
print("当前时间:", now)

运行这段代码,你会看到类似如下输出:

当前时间: 2024-05-14 12:34:56.789012

这表示我们成功获取到了当前的日期和时间,但这只是 datetime 功能的冰山一角。

在这里插入图片描述


格式化日期和时间
获取到日期和时间后,我们往往需要以不同的格式展示它们。datetime 类提供了 strftime 方法,可以将日期和时间对象格式化为我们需要的字符串形式:

formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的当前时间:", formatted_now)

运行结果如下:

格式化后的当前时间: 2024-05-14 12:34:56

strftime 方法中使用了格式化字符串,以下是一些常见的格式化代码:

  • %Y:四位数的年份
  • %m:两位数的月份(01-12)
  • %d:两位数的日期(01-31)
  • %H:两位数的小时(00-23)
  • %M:两位数的分钟(00-59)
  • %S:两位数的秒(00-59)

通过组合这些代码,我们可以任意定制日期和时间的显示格式。

解析字符串为日期
有时,我们需要将字符串转换为日期对象。datetime 类提供了 strptime 方法,可以解析字符串并返回日期对象:

date_string = "2024-05-14 12:34:56"
parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print("解析后的日期对象:", parsed_date)

运行结果:

解析后的日期对象: 2024-05-14 12:34:56

这就实现了从字符串到日期对象的转换,非常方便。


日期运算
除了基本的日期和时间获取与格式化外,datetime 模块还支持日期运算。例如,我们可以计算两个日期之间的差异,或者对日期进行加减运算。

日期差异
使用 timedelta 类可以轻松计算两个日期之间的时间差:

from datetime import timedelta

# 计算两个日期之间的差异
future_date = now + timedelta(days=5)
date_difference = future_date - now
print("两个日期之间的差异:", date_difference)

输出结果:

两个日期之间的差异: 5 days, 0:00:00

日期加减
我们可以使用 timedelta 类对日期进行加减运算,例如,加上或减去一定的天数、小时、分钟等:

# 加上10天
new_date = now + timedelta(days=10)
print("加上10天后的日期:", new_date)

# 减去3小时
new_date = now - timedelta(hours=3)
print("减去3小时后的日期:", new_date)

输出结果:

加上10天后的日期: 2024-05-24 12:34:56.789012
减去3小时后的日期: 2024-05-14 09:34:56.789012

特殊日期处理
在处理日期时,节假日或特殊日期是不可避免的。我们可以使用 calendar 模块结合 datetime 来处理这些情况。
在这里插入图片描述

判断是否为工作日

import calendar

def is_workday(date):
    return calendar.weekday(date.year, date.month, date.day) < 5

print("今天是工作日吗?", is_workday(now))

输出结果:

今天是工作日吗? True

获取一个月的天数

def days_in_month(year, month):
    _, num_days = calendar.monthrange(year, month)
    return num_days

print("2024年5月的天数:", days_in_month(2024, 5))

输出结果:

20245月的天数: 31

时区处理
现代应用中,处理时区是非常重要的一部分。pytz 模块中的 timezone 类可以帮我们轻松应对时区问题。

获取当前时间的时区

import pytz

# 设置时区
tz = pytz.timezone("Asia/Shanghai")
local_time = datetime.now(tz)
print("上海时间:", local_time)

输出结果:

上海时间: 2024-05-14 12:34:56.789012+08:00

不同时区转换

# 转换为纽约时间
ny_tz = pytz.timezone("America/New_York")
ny_time = local_time.astimezone(ny_tz)
print("纽约时间:", ny_time)

输出结果:

纽约时间: 2024-05-14 00:34:56.789012-04:00

将 datetime 模块和 pytzcalendar 模块结合能发挥更加实用的功能,其实 datetime 模块还和 time 模块的功能有些相似

更多功能,详细用法可参考官方文档:

https://docs.python.org/zh-cn/3/library/datetime.html

。。。

三、小结

通过 datetime 模块,我们不仅可以轻松获取当前日期和时间,还可以对日期和时间进行格式化、解析、运算以及时区处理。它是一个功能强大且灵活的工具,使我们能够以优雅的方式处理各种时间相关的任务。

让我们回顾一下今天学习到的内容:

  • 获取当前日期和时间
  • 获取当前日期和时间
  • 解析字符串为日期
  • 日期运算:计算差异、日期加减
  • 特殊日期处理:判断工作日、获取一个月的天数
  • 特殊日期处理:判断工作日、获取一个月的天数

希望这篇文章能让你对 datetime 模块有一个全面的了解,也希望你能在实际应用中充分发挥它的强大功能。如果你对 Python 编程感兴趣,记得关注我们,更多有趣实用的编程知识等你来探索!

在这里插入图片描述

四、作者Info

Author:小鸿的摸鱼日常

Goal:让编程更有趣! 专注于 Web 开发、爬虫,游戏开发,数据分析、自然语言处理,AI 等,期待你的关注,让我们一起成长、一起 Coding!

版权说明:本文禁止抄袭、转载,侵权必究!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/685438.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【html】如何用html+css写出一个漂亮的“众成教育”页面

先来看看效果图&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><style>* {margin: 0;padding: 0;/* border: 2px solid #000; */}.con {width: 1000px;height: 840px…

了解Kubernetes-RKE2的PKI以及证书存放位置

一、什么是PKI&#xff1f; 简称&#xff1a;证书基础设施。 可以方便理解为当你的集群有Server,Client架构&#xff0c;那么为了安全加密之间的通信&#xff0c;则需要使用证书进行交互&#xff0c;那么利用PKI架构可以安全加密组件之间的通信。 二、Kubernetes的PKI架构什…

后端开发面经系列 -- 华为C++一面面经

HUAWEI – C一面面经 公众号&#xff1a;阿Q技术站 来源&#xff1a;https://www.nowcoder.com/feed/main/detail/b8113ff340d7444985b32a73c207c826 1、计网的协议分几层&#xff1f;分别叫什么&#xff1f; OSI七层模型 物理层 (Physical Layer): 负责物理设备之间的原始比…

深入了解静态IP:基础知识与原理(固定IP地址解析)

在今天的数字化世界中&#xff0c;互联网连接已成为我们日常生活和工作中不可或缺的一部分。而在网络连接中&#xff0c;IP地址起着至关重要的作用。其中&#xff0c;静态IP地址因其独特的性质而备受关注。本文将深入探讨静态IP的基础知识、与动态IP的区别、工作原理以及为什么…

Vue-插槽 Slots

文章目录 前言什么叫插槽简单插槽指定默认值多个插槽根据父级别名称指定区域显示(具名插槽)作用域插槽 前言 本篇文章不做过多的讲解与说明&#xff0c;只记录个人实验测试案例。 详见&#xff1a;vue 官方文档 插槽 slots 什么叫插槽 之前的博客中&#xff0c;父级组件可以…

MogoTemplate基本入门(Mongodb数据库基本增删改查)

nosql 因为没有标准的 sql&#xff0c;各有各的操作方式&#xff0c;所以学习成本比较高。实际应用也不会去命令行直接操作&#xff0c;而是用编程语言的 api。 所以我们可以简单了解一下Mongodb&#xff0c;然后用java的Api去操作就行了 没必要花很大功夫在命令行上操作执行…

《大道平渊》· 玖 —— 把高深的道理讲的通俗,这是一门艺术。

《平渊》 玖 "化繁为简, 点石成金。" 把高深的道理讲得通俗&#xff0c;这是一门艺术&#xff01; 讲述者能够站在群众的角度&#xff0c;用尽可能简单通俗的语言来解释复杂的概念。 讲述者需要对概念有深刻的理解&#xff0c;还要有灵活的表达能力。 群众愿意接受…

差分原理+练习

差分的原理和前缀和相似&#xff0c;我们先联想一下前缀和。 前缀和计算下标从0到n的和&#xff0c;记为sum[n1];如果想要求出[l,r]区间的和&#xff0c;可以快速的通过sum[r1]-sum[l]来得到 。 前缀和适用于需要多次获取指定连续区间和的情景 而差分即计算相邻两个元素的差…

pESC-HIS是什么,怎么看?-实验操作系列-2

01 典型的pESC-HIS质粒遗传图谱 02 介绍 质粒类型&#xff1a;酿酒酵母蛋白表达载体 表达水平&#xff1a;高拷贝 诱导方法&#xff1a;半乳糖 启动子&#xff1a;GAL1和GAL10 克隆方法&#xff1a;多克隆位点&#xff0c;限制性内切酶 载体大小&#xff1a;6706bp 5 测…

Ubuntu系统中Apache Web服务器的配置与实战

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

当高考遇上端午假期

端午就要到了&#xff0c;碰巧遇上高考&#xff0c;那就假期回家&#xff0c;给学子们让路。一家人在一起&#xff0c;陪着长辈&#xff0c;吃个香甜的粽子&#xff0c;话个家常&#xff0c;也教长辈这两个功能&#xff0c;何尝不是一种幸福 华为畅享70S伴你温情相聚。 长辈关…

RTA_OS基础功能讲解 2.8-Tick计数器

RTA_OS基础功能讲解 2.8-Tick计数器 文章目录 RTA_OS基础功能讲解 2.8-Tick计数器一、计数器简介二、计数器配置三、计数器驱动3.1 软件计数器驱动3.1.1 递增软件计数器3.1.2 静态计数器接口3.2 硬件计数器驱动3.2.1 Advancing硬件计数器3.2.2 回调函数四、在运行时访问计数器属…

shell的编程方式

文章目录 变量俩种方式第一种方式第二种方式 取消变量数组创建数组获取数组元素的方式 read输出的方式限制输入的方式 流程控制方式for循环输出的方式第一种方式第二种方式while循环输出的方式select选择输出的方式 判断方式判断的四种方式第一种方式第二种方式第三种方式 算术…

springboot+vue+mybatis房屋租贷系统+PPT+论文+讲解+售后

本论文系统地描绘了整个网上房屋租赁系统的设计与实现&#xff0c;主要实现的功能有以下几点&#xff1a;管理员&#xff1b;首页、个人中心、房屋类型管理、房屋租赁管理、会员管理、订单信息管理、合同信息管理、退房评价管理、管理员管理&#xff0c;系统管理&#xff0c;前…

parseInt函数

貌似遇到问题了&#xff0c;在Java中&#xff0c;parseInt方法是java.lang.Integer类的一个静态方法&#xff0c;它用来将字符串转换为基本数据类型int。如果字符串不能被解析为有效的整数&#xff0c;parseInt会抛出一个NumberFormatException。 原来是取整串转换&#xff0c;…

行心科技|中科利众:健康科技新合作,营养与科技融合前行

2024中国国际大健康产业文化节暨第34届国际大健康产业交易博览会于2024年5月31日在保利世贸博览馆盛大开幕&#xff0c;行心科技与中科利众&#xff08;贵州&#xff09;生物科技有限公司不谋而合&#xff0c;就“膳食机能健康问题解决方案”达成战略合作&#xff0c;共同开启膳…

Android——热点开关演讲稿

SoftAP打开与关闭 目录 1.三个名词的解释以及关系 Tethering——网络共享&#xff0c;WiFi热点、蓝牙、USB SoftAp——热点(无线接入点)&#xff0c;临时接入点 Hostapd——Hostapd是用于Linux系统的软件&#xff0c;&#xff0c;支持多种无线认证和加密协议&#xff0c;将任…

mmdetection的生物图像实例分割三:自定义数据集的测试与分析

mmdetection的生物图像实例分割全流程记录 第三章 自定义数据集的测试、重建与分析 文章目录 mmdetection的生物图像实例分割全流程记录前言一、测试集的推理1.模型测试2.测试数据解析 二、测试结果的数据整合三、生物结构的重建效果 前言 mmdetection是一个比较容易入门且上…

【Linux】Linux环境基础开发工具_5

文章目录 四、Linux环境基础开发工具Linux小程序---进度条git 未完待续 四、Linux环境基础开发工具 Linux小程序—进度条 上篇我们实现了一个简易的进度条&#xff0c;不过那仅仅是测试&#xff0c;接下来我们真正的正式实现一个进度条。 接着编写 processbar.c 文件 然…

java第二十课 —— 面向对象习题

类与对象练习题 编写类 A01&#xff0c;定义方法 max&#xff0c;实现求某个 double 数组的最大值&#xff0c;并返回。 public class Chapter7{public static void main(String[] args){A01 m new A01();double[] doubleArray null;Double res m.max(doubleArray);if(res !…