Datetime,一个 Python 的时间掌控者

news2024/11/26 3:44:17

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

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


神奇的 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!

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

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

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

相关文章

NMF算法

1. NMF算法 NMF算法&#xff0c;即非负矩阵分解&#xff0c;是一种无监督学习算法&#xff0c;主要用于数据降维和特征提取&#xff0c;特别是在数据元素具有非负性约束的情况下。 NMF是一种数据降维模型&#xff0c;它的基本模型是通过矩阵分解将非负数据转换到新的空间&…

性能测试和功能测试有什么区别吗?

性能测试和功能测试是软件测试中两个不同的概念和方法。尽管它们都是为了提高软件质量和健壮性而进行的测试&#xff0c;但它们关注的方面和方法却不同。下面我将详细介绍性能测试和功能测试的区别。 一、定义和目的 性能测试是测试软件系统在不同条件下的性能和响应能力&…

微软新AI工具 Recall 被白帽公开锤了?

近日&#xff0c;一些网络安全研究人员演示了恶意软件是如何成功窃取 Windows Recall 工具收集到的数据。 2024年5月21日&#xff0c;微软发布全新的“CopilotPC”&#xff0c;这类 AI PC 通过与高通的最新芯片合作&#xff0c;实现了一个叫做“Recall”的功能。借助这个人工智…

lnmp平台部署web应用,安装Discuz社区平台详细文章——更新中

Nginx网站service 详细相关介绍-特点-http状态码-配置文件、将nginx添加永久环境变量 访问网站404是什么&#xff1f;_nginx 稳定版-CSDN博客文章浏览阅读1.2k次&#xff0c;点赞33次&#xff0c;收藏24次。开源Web服务器软件。_nginx 稳定版https://blog.csdn.net/2301_771619…

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

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

MySQL Doublewrite Buffer 有了解过吗?

引言&#xff1a;在数据库管理中&#xff0c;确保数据的完整性和一致性是至关重要的。然而&#xff0c;在持久化数据到磁盘的过程中&#xff0c;可能会遇到各种意外情况&#xff0c;如断电或系统崩溃&#xff0c;从而导致部分数据写入&#xff0c;而另一部分数据未能成功写入&a…

eclipse怎么导入python项目

python项目导入eclipse的步骤&#xff1a; 1、首先&#xff0c;打开Eclipse集成开发程序&#xff0c;在菜单栏上点击“File(F)”&#xff0c;在弹出来的列表中点击“导入&#xff08;I&#xff09;...”。 2、在弹出来的“导入”窗口中&#xff0c;选择“常规”选项中的“现有…

QT学习过程中遇到的问题自记

文章目录 前言问题1问题2问题3 前言 学习QT嵌入式实战开发(从串口通信到JSON通信微课视频版)的过程中遇到的几个小问题 问题1 1.将书中的示例代码导入自己的电脑&#xff0c;然后点击工程进去&#xff0c;不能运行&#xff0c;报错 no kits are enabled for this project… 我…

[数据集][目标检测]数据集VOC格式岸边垂钓钓鱼fishing目标检测数据集-4330张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;4330 标注数量(xml文件个数)&#xff1a;4330 标注类别数&#xff1a;1 标注类别名称:["fishing"] 每…

小程序自定义marker弹出框教程

需求背景 微信小程序开发&#xff0c;需要使用腾讯地图显示自定义marker&#xff0c;并且点击marker后弹出自定义的customCallout&#xff0c;并且customCallout的内容为用户点击marker的时候再从后台接口获取数据。 百度了一圈后发现居然没有一篇文章可以一次性完成&#xf…

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

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

uniapp封装picker选择器组件,支持关键字查询

CommonPicker.vue组件 路径在 components\CommonPicker.vue <template><view><uni-easyinput v-model"searchQuery" :placeholder"placeholder" /><picker :range"filteredOptions" :range-key"text" v-model&…

韩顺平0基础学java——第18天

p374-395 类变量和类方法 类变量&#xff08;静态变量&#xff09; 例&#xff1a; class Child{ public static Int count&#xff1b;//这个count可以被所有Child实例共享 /..../ } 内存中&#xff0c;static在堆中是独立存放的&#xff0c;并不在某个对象的空间中。 由于…

行业分析---造车新势力之理想汽车

1 前言 在之前的博客中&#xff0c;笔者撰写了多篇行业类分析的文章&#xff08;科技新能源&#xff09;&#xff1a; 《行业分析---我眼中的Apple Inc.》 《行业分析---马斯克的Tesla》 《行业分析---造车新势力之蔚来汽车》 《行业分析---造车新势力之小鹏汽车》 此类文章的受…

前端传参数后端变量类型能够接受到List却无法接收到值

问题描述 今天写了个接口&#xff0c;下图所示 ReqVO里是这样的&#xff1a; 然后前端去请求&#xff0c;从请求结果中看发现这里值是在的&#xff08;有经验的可能就看出来了otherInfo.id: 这样以参数后端是接收不到的&#xff0c;但是当时没发现&#xff09; 传进来后端…

zynq-7015启动分析及裸机BootLoader编写(未完待续)

使用lwip-tcp远程对QSPI进行更新、QSPI FLASH启动 W25Q128资料&#xff1a; W25Q128JV datasheet(1/78 Pages) WINBOND | 3V 128M-bit serial flash memory with dual/quad spi (alldatasheet.com) UG585资料&#xff1a; Zynq 7000 SoC Technical Reference Manual-UG585 翻译…

python3 -m http.server 检查打包前端的项目

python3 -m http.server这是 Python 提供的一个内置的简单 HTTP 服务器。当你在终端中运行 python3 -m http.server 命令时(在对应的打包目录比如dist目录)&#xff0c;Python 会启动一个 HTTP 服务器&#xff0c;它会将当前工作目录下的文件作为静态文件提供给浏览器。这个服务…

张大哥笔记:高考,万人过独木桥,你怕不怕摔倒?

今天刷到一个新闻&#xff1a;宁夏煤业计划招600名挖煤的井下操作工&#xff0c;要求大学学历&#xff01;结果却吸引了7900人来报名&#xff01;我都惊呆了&#xff0c;什么时候挖煤都要求这么高的学历了&#xff0c;那读书到底起啥作用&#xff01; 如果一个人读书读到大学后…

web刷题记录(4)

[GKCTF 2020]cve版签到 进来应该是给了个提示了&#xff0c;就是要以.ctfhub.com结尾 还有一个超链接&#xff0c;这题的ssrf还是挺明显的&#xff0c;抓包看看 发现回显里面有提示 说是和本地有关&#xff0c;那么也就是说&#xff0c;要访问127.0.0.1&#xff0c;大概意思就…

基于FPGA的任意点滑动平均(滑动窗长度和数据位宽参数化,例化时参数可设置)

目录 1.前言2.原理3.举例说明4.Matlab实现5.FPGA实现滑动平均 微信公众号获取更多FPGA相关源码&#xff1a; 1.前言 对于一维信号&#xff0c;我们可以使用类似移动平均滤波&#xff08;Moving Average Filtering&#xff09;实现denoising。Moving Average Filtering 是一种…