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 calendardef is_workday(date):return calendar.weekday(date.year, date.month, date.day) < 5print("今天是工作日吗?", is_workday(now))

输出结果:

今天是工作日吗? True

获取一个月的天数

def days_in_month(year, month):_, num_days = calendar.monthrange(year, month)return num_daysprint("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!

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精选网络安全书单:打造数字世界的钢铁长城!

目录 1.前言 2.书单推荐 2.1. 《内网渗透实战攻略》 2.2. 《Kali Linux高级渗透测试&#xff08;原书第4版&#xff09;》 2.3. 《CTF那些事儿》 2.4. 《权限提升技术&#xff1a;攻防实战与技巧》 2.5. 《数字政府网络安全合规性建设指南&#xff1a;密码应用与数据安全…

#01 Stable Diffusion基础入门:了解AI图像生成

文章目录 前言什么是Stable Diffusion?Stable Diffusion的工作原理如何使用Stable Diffusion?Stable Diffusion的应用场景结论 前言 在当今迅速发展的人工智能领域&#xff0c;AI图像生成技术以其独特的魅力吸引了广泛的关注。Stable Diffusion作为其中的一项前沿技术&#…

【Java毕业设计】基于JSP+SSM的物流管理系统

文章目录 目 录摘要ABSTRACT1 概述1.1 课题背景及意义1.2 国内外研究现状1.3 本课题主要工作 2 系统开发环境2.1 JSP技术2.2 JavaScript2.3 B/S结构2.4 HTML简介 3 系统分析3.1 可行性分析3.1.1 技术可行性3.1.2操作可行性3.1.3 经济可行性3.1.4 法律可行性 3.2系统流程设计3.2…

Python文档生成工具库之alabaster使用详解

概要 在编写文档时,美观和易读性是两个重要的方面。Sphinx 是一个广泛使用的文档生成工具,而 Alabaster 是 Sphinx 默认的主题。alabaster 主题以其简洁优雅的设计和易用的配置选项受到广大用户的欢迎。本文将详细介绍 alabaster 库,包括其安装方法、主要特性、基本和高级功…

Go实战 | 使用Go-Fiber采用分层架构搭建一个简单的Web服务

前言 &#x1f4e2;博客主页&#xff1a;程序源⠀-CSDN博客 &#x1f4e2;欢迎点赞&#x1f44d;收藏⭐留言&#x1f4dd;如有错误敬请指正&#xff01; 一、环境准备、示例介绍 Go语言安装&#xff0c;GoLand编辑器 这个示例实现了一个简单的待办事项&#xff08;todo&#xf…

halo进阶-主题插件使用

开始捣鼓捣鼓halo&#xff0c;换换主题&#xff0c;加个页面 可参考&#xff1a;Halo 文档 安装/更新主题 主题如同壁纸&#xff0c;萝卜青菜各有所爱&#xff0c;大家按需更换即可&#xff1b; Halo好在一键更换主题&#xff0c;炒鸡方便。 安装/更新插件 此插件还扩展了插件…

【数据结构】C语言实现二叉树的基本操作——二叉树的遍历(先序遍历、中序遍历、后序遍历)

C语言实现二叉树的基本操作 导读一、二叉树的遍历二、先序遍历三、中序遍历四、后序遍历五、结点序列六、递归算法与非递归算法的转化结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 通过前面的介绍&#xff0c;我们已经认识了二叉树…

1.6T模块与DSP技术的演进

近日&#xff0c;光通信行业市场机构LightCounting在市场报告中指出&#xff0c;去年的模块供应商已经展示了首批1.6T光学模块的风采&#xff0c;而今年&#xff0c;DSP供应商更是着眼于第二代1.6T模块设计的未来。这些前沿技术的突破&#xff0c;不仅代表了数据传输速度的飞跃…

三十九、openlayers官网示例Extent Interaction解析——在地图上绘制范围并获取数据

官网demo 地址&#xff1a; Extent Interaction 在openlayers中可以使用ExtentInteraction添加交互事件&#xff0c;配合shiftKeyOnly实现按住shift键绘制边界区域。 const map new Map({layers: [new TileLayer({source: new OSM(),}),],target: "map",view: new …

开源!过程控制与自动化系统

软件介绍 ProviewR是一个基于GPL许可的过程控制与自动化系统&#xff0c;最初由瑞典的Mandator和SSAB Oxelsund开发。作为一个成熟、集成且低成本的自动化解决方案&#xff0c;ProviewR在以Linux作为操作系统的标准PC上运行。该系统包含了顺序控制、调整、数据采集、通信、监控…

AI大模型语料库

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 语料库概述 语料库&#xff08;Corpus&#xff09;是一个存储了大量真实语言使用实例的集合&#xff0c;这些实例可以是文本、语音、视频等多种形式的语言数据。语料库通常…

ESP32 Error creating RestrictedPinnedToCore

随缘记&#xff0c;刚遇到&#xff0c;等以后就可能不想来写笔记了。 目前要使用到音频数据&#xff0c;所以去用ESP-ADF&#xff0c;但在使用例程上出现了这个API有问题&#xff0c;要去打补丁。 但是我打补丁的时候git bash里显示not apply&#xff0c;不能打上。 网上看到…

物联网开发tcp协议之——netty拆包问题

1.前言 tcp协议是物联网开发中比较常见的一种通信协议&#xff0c;而netty则是一tcp通信协议中一个比较优秀的框架。tcp协议是一种长连接的协议&#xff0c;是流式传输的&#xff0c;开发过程中最长遇见的问题就是拆包粘包问题。我目前对接过的物联网系列有智能家居设备&#…

神奇的python语法

今天发现一个神奇的语法规则 import numpy as np aa np.zeros((4,3)) print(aa) print(aa .shape[0] * aa. shape[1])结果是不报错的 结果是正常运行的 包括在jupyter里面&#xff0c;这种写法还是没有报错

氧兜:新一代隔热防晒膜,打造您的健康氧吧,开启品质生活新篇章

随着人们对生活品质追求的不断提升&#xff0c;氧兜品牌凭借创新科技&#xff0c;为您带来了新一代隔热防晒膜。它不仅具备卓越的隔热防晒功能&#xff0c;更能通过释放负氧离子&#xff0c;为您打造一个居家办公或出行环境的氧吧&#xff0c;让您的生活更加健康、舒适。 一、…

三十四篇:办公效率革命:深入探索办公自动化系统的全面策略

办公效率革命&#xff1a;深入探索办公自动化系统的全面策略 1. 引言 1.1 办公自动化系统&#xff08;OAS&#xff09;的定义与关键作用 在当前的企业环境中&#xff0c;办公自动化系统&#xff08;Office Automation System, OAS&#xff09;已成为提高效率和执行力的关键技…

全面守护你的健康ZL-0891A小动物多参数监护仪

简单介绍&#xff1a; 12.1英寸彩色TFT显示&#xff0c;分辨率800X600,采用数字血氧DSP算法&#xff0c;低灌注&#xff0c;小动物多参数监护仪具有优良的抗运动性能;动物用血压算法&#xff0c;支持测量各种动物类型,特有的中英文语音报警;支持USB数据导出&#xff0c;可以在…

Ubuntu部署开源网关Apache APISIX

说明 系统&#xff1a;Ubuntu 24.04 LTSDocker版本&#xff1a;v26.1.3Docker Compose版本&#xff1a;v2.26.1 下载和配置 Ubuntu需要安装Docker和Docker Compose 下载apisix-docker仓库 git clone https://github.com/apache/apisix-docker.git修改docker-compose 配置e…

C语言小例程8/100

题目&#xff1a;输出特殊图案&#xff0c;请在c环境中运行&#xff0c;看一看 程序分析&#xff1a;字符共有256个。不同字符&#xff0c;图形不一样。 #include<stdio.h> int main() {char a176,b219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c…

:长亭雷池社区版动态防护体验测评

序 长亭雷池在最近发布了动态防护功能&#xff0c;据说可以动态加密保护网页前端代码和阻止爬虫行为、阻止漏洞扫描行为等。今天就来体验测试一下 WAF 是什么 WAF 是 Web Application Firewall 的缩写&#xff0c;也被称为 Web 应用防火墙。区别于传统防火墙&#xff0c;WAF …