6 款 超好用的 Python 时间库

jmeter问题系列:Begin size 0 is not equal to fixed size 5 Begin size 0 is not equal to fixed size 5 ,问题的解决 阅读详情

公众号关注 “菜鸟学Python”

设为 “星标”,每天带你学干货!

开源最前线(ID:OpenSourceTop)

链接:https://opensource.com/article/18/4/python-datetime-libraries

写过Python程序的人都知道,Python日期和时间的处理非常繁琐和麻烦。

除了将字符串转换为更有用的 Python 对象之外,还有许多库具有一些有用的方法和工具,可以让你更轻松地进行时间测试、将时间转换为不同的时区、以人类可读的格式输出时间信息,本文将介绍以下六个Python的时间日期库:

● Dateutil

● Arrow

● Moment

● Maya

● Delorean

● Freezegun

内建的 datetime 模块

在介绍其他库之前,让我们回顾以下如何使用datetime模块将日期字符串转换为Python日期时间对象。

假设我们从API接收到这个日期字符串,并且需要它作为Python datetime对象存在:

2018-04-29T17:45:25Z

该字符串包括:

● YYYY-MM-DD格式的日期

● 字母“T”表示即将到来的时间

● HH:II:SS的时间格式

● 指示此时间的时区指示符“Z”采用UTC

要使用该datetime模块将此字符串转换为Python datetime对象,你可以首先从strptime开始。datetime.strptime接收日期字符串和格式化字符并返回一个Python datetime对象。

我们必须手动将日期时间字符串的每个部分转换为Python datetime.strptime可以理解的格式化字符串。四位数的年份表示为%Y。两位数的月份是%m。两位数的日期是%d。24小时制的时间,%H表示小时数,分钟数用%M表示,秒用%S表示。

由于字符串中的“Z”表示此日期时间字符串采用UTC,所以我们可以在格式中忽略此项。

此转换的代码如下所示:

格式化字符串很难阅读和理解。有些人不太了解阅读datetime代码的人就会发现这很难理解,尽管其含义已有文档说明,但仍然很难阅读。

让我们看看其他库如何处理这种转换。

1、Dateutil

Dateutil模块为datetime模块提供了一些扩展,依然以上面的示例为例,实现相同的结果则要简单得多:

dateutil解析后可以自动返回字符串的时区。由于我们采用UTC,你可以看到返回了datetime对象。如果你想parse完全忽略时区信息,并返回一个原生的DateTime对象,你可以传递参数 ignoretz=True 给parse,像这样:

Dateutil还可以解析更多可读的日期字符串:

dateutil还提供了relativedelta,用于计算两个日期时间之间的时差或从日期时间添加/删除,rrule用于创建重复日期时间,tz用于处理时区以及其他工具。

2、Arrow

Arrow是另一个库,其目标是进行操作,格式化,并处理更合理的日期和时间。它包括dateutil模块,根据其文档描述Arrow旨在“帮助你使用更少的代码来处理日期和时间”。

要返回我们的解析示例,下面介绍如何使用 Arrow 将日期字符串转换为 Arrow 的 datetime 类的实例:

你也可以在第二个参数中指定get() 格式,就像使用strptime一样,Arrow会尽力解析你提供的字符串,get() 返回 Arrow 的 datetime 类的一个实例。要使用Arrow来获取 Python datetime对象,可以如下所示:

通过Arrow datetime类的实例,你还可以访问Arrow的其他有用方法。例如,它的humanize()方法将日期时间解析成可读的短语,如下所示:

你可以在Arrow文档中阅读更多有用的方法

3、Moment

Moment的创作者认为它是“测试版”,但即使它处于早期阶段,却非常受欢迎的,因此它出现在推荐名单内

Moment将字符串转换的方法很简单,类似于我们之前提到的库:

和其他库一样,它最初返回它自己的datetime类的实例。要返回Python datetime对象,请添加一个date()调用。

这会将Moment datetime类转换为Python日期时间对象。Moment还提供了使用人类可读语言创建新日期的方法。如为明天创建一个日期:

它add()和subtract()命令采取关键字参数,使日期的操作变得简单,以及为了获得后天的日期,Moment会使用下面的代码:

4、Maya

MAya包含了其他流行的库,诸如Humanize,pytz和pendulum等等。该项目的目标是让人们更容易处理日期。

Maya的README包含几个有用的示例。以下是如何使用Maya重现上面解析示例:

请注意,我们必须在.datetime()之后调用maya.parse()。如果我们跳过这一步,Maya将返回MayaDT类的一个实例:<MayaDT epoch=1525023925.0>。

由于Maya有许多方法和datetime库中的一样,因此它可以使用其MayaDT类的实例来执行诸如使用slang_time()方法将timedeltas转换为纯文本语言,以及将日期时间间隔保存在单个类的实例操作中。以下是如何使用Maya将日期时间表示为人类可读的短语:

很显然,slang_time()的输出结果会根据你与datetime对象的距离长短而改变。

5、Delorean

Delorean以《Back to the Future》电影中的时间旅行汽车命名的,适用于操纵日期时间:将日期时间转换为其他时区,并添加或减去时间。

Delorean需要有效的Python Datetime才能执行,所以如果你需要使用日期时间字符串,最好将其与上述库中的一个配合使用。例如,将Maya与Delorean一起使用:

现在,在日期时间对象d_t可供您使用的情况下,你可以使用Delorean进行操作,例如将日期时间转换为美国东部时区:

你看小时数已经从17变为13了,你还可以使用自然语言方法来操作 datetime 对象。2018年4月29日之后的下个星期五(我们使用的日期):

6、Freezegun

Freezegun是一个可以帮助你在Python代码中测试特定日期的库。使用@freeze_time装饰器,你可以设置测试条件下的具体日期和时间,所有datetime.datetime.now(),datetime.datetime.utcnow()等都会返回你指定的日期和时间。例如:

要跨时区进行测试,可以将tz_offset参数传递给装饰器。该freeze_time装饰同样能够处理更通俗易懂的语言日期,例如@freeze_time( April 4, 2017 )。

上面提到的每个库都有各自不同的功能。可能很难确定哪一个最适合你的需求。正如Maya的创作者 Kenneth Reitz说:“所有这些项目相互补充,它们都很友好。”

这些库各自都具备一些功能,但并不都是完美的。有些擅长时间操作,有些擅长解析。但他们都有共同的目标,即让时间日期相关的操作都变得简单。当你发现Python的内置datetime模块已经不够用的时候,你可以选择以上的某一个库尝试看看。

end

菜鸟编程大本营,现已正式上线!

接下来我们将会在该公众号上,为大家分享优质编程语言里趣味的干货,通俗易懂的实战案例,经验分享,让菜鸟也爱上编程。



YOLO数据集实现数据增强的方法(裁剪、平移 、旋转、改变亮度、加噪声等) 数据集样本太少怎么办?数据集优质图像不够怎么办?如何做到更好的数据预处理?一文带你学会数据增强,还可实现带标签的扩充。 阅读详情

相关推荐

Keil v5.11给STM32烧录程序记录

1)安装KeilMDK511 2)安装ST Link下载器驱动 3)打开Keil v5,加载工程文件 4)load pack(Keil.STM32F1xx_DFP.1.1.0和Keil.STM32F0xx_DFP.1.2.0) 5)编译程序- 0 Error(s), 0 Warning(s). 6)烧录程序 ...

守望的距离 6282

最好用的 6 款 Python 的日期时间库

点击上方“程序员大咖”,选择“置顶公众号”关键时刻,第一时间送达!写过Python程序的人都知道,Python日期和时间的处理非常繁琐和麻烦。除了将字符串转换为更有用的 ...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 1408

关于三维全波电磁场仿真软件CST的安装和问题解决

百度网盘链接:https://pan.baidu.com/s/1RgWr8Qau1EzSOlh29SewFQ提取码:fzza这里是2023版本的CST,需要其他版本的uu们可以去官网或者其他人的网盘下载。

weixin_60728441的博客 3621

python moment 库使用

用于处理日期/时间的 Python 库,设计灵感同样是来源于moment.js和requests,设计理念源自TimesPython 模块。 Usage import moment from datetime import datetime # Create a moment from a string moment.date("12-18-2012") # Create a moment with a specified strftime format moment.date("12...

dudu3332的博客 1483

【R语言实例】物种分布模型介绍

SDM介绍

wong2016的博客 1万+

TMS320C6678开发笔记1-6---C6678单核烧写程序

第6节 单核烧写加载程序 6.1节 TI参考文档 参考文档:《KeystoneI Bootloader Resources and FAQ》讲的非常好,建议一定要看 https://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#Direct_Boot_Examples_.28without_IBL.29 里面有三个工程: C6678 EVM SPI boot example C6657 EVM ..

kunkliu的博客 5699

python常用标准库(时间模块time和datetime)

常用的标准库 time时间模块 import time time – 获取本地时间戳 时间戳又被称之为是Unix时间戳,原本是在Unix系统中的计时工具。 它的含义是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。UNIX时间戳的 0 按照ISO 8601规范为 :1970-01-01T00:00:00Z。 比如: 时间戳 60 表示 1970-01-01T00:01:00Z 时间戳 120 表示 1970-01-01T00:02:00Z 时间戳 3600 表示 1970-01-

小可爱的博客 1403

ModusToolbox 实战避坑指南|从环境配置到项目构建

本文是一份详尽的ModusToolbox实战避坑指南,手把手教你从环境配置到项目构建。重点解决了Windows系统下的安装、关键环境变量CY_TOOLS_PATHS的设置、PowerShell执行策略调整以及利用URL Modifier工具优化GitHub资源下载等核心难题,旨在帮助开发者,特别是英飞凌(Infineon)芯片用户,顺利搭建开发环境并成功运行第一个Hello World程序。

t1u2v的博客 592

datetime判断日期不要时间_Python datetime指南:教你如何处理日期和时间(附试题+答案)...

译者 | Tianyu出品 | AI科技大本营datetime 是 Python 中处理日期的标准模块,它提供了 4 种对日期和时间进行处理的主要对象:datetime、date、time 和 timedelta。通过本文,你会学习到如何操作这些对象,并用 Python 解决一些有关日期和时间的实际问题。本文内容:datetime 简介如何在 Python 中获取当前日期和时间如何创建 datet...

weixin_39803977的博客 2000

UI-TARS本地部署

UI-TARS是一个用于本地部署的交互控制模型,支持桌面应用的自动化操作。部署步骤包括:首先,从官方GitHub仓库下载项目源码和模型checkpoint;其次,使用vLLM框架进行本地模型部署,启动API服务;最后,通过客户端调用API实现功能。部署过程中可能遇到pynvml模块或模型配置问题,提供了相应的解决方案。此外,还支持通过UI-TARS-Desktop客户端进行本地桌面应用的交互控制。整体流程旨在帮助用户快速实现UI-TARS的本地部署与应用。

DYF的博客 2533

comsol如何实现五厚度的单元模拟?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 471

moment,一个有趣的 Python 库!

自定义日期格式custom_format = moment.date('2022-03-20').format('YYYY年MM月DD日')print('自定义日期格式:', custom_format)在这个示例中,使用自定义的日期格式将日期格式化为中文格式。Python Moment库提供了丰富而强大的日期和时间处理功能,可以帮助开发者轻松处理各种日期和时间操作。通过本文的介绍和示例,相信大家已经对Moment库有了更深入的了解,并可以在实际项目中应用它来提高开发效率和日期处理的准确性。

涛哥聊Python 1177

binning模式下和normal模式下相同曝光参数相同场景加权亮度差异消除方案优化(一)

摘要:针对ISP参数设置中浮点权重系数需转换为整数的问题,提出整数邻域搜索方案。该方法在浮点最优解附近(±1/±2)进行局部搜索,通过逐阶微调找到误差最小的整数权重组合,避免直接取整导致的误差反弹(误差从0.8%降至0.35%)。方案结合范围约束(1~15)和单调性约束(暗端递减、亮端递增),兼顾计算效率(单图耗时<10ms)与硬件兼容性,显著优于暴力搜索和简单取整,满足工程落地需求。

大熊 97

6 款 超好用的 Python 时间库_类似 datetime

① 2000多本Python电子书(主流和经典的书籍应该都有了)② Python标准库资料(最全中文版)③ 项目源码(四五十个有趣且经典的练手项目及源码)④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)⑤ Python学习路线图(告别不入流的学习)● Dateutil● Arrow● Moment● Maya● Delorean。

2401_84572511的博客 1235

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

utc时间转换工具_分享6款超好用的 Python 时间库

写过Python程序的人都知道,Python日期和时间的处理非常繁琐和麻烦。 除了将字符串转换为更有用的 Python 对象之外,还有许多库具有一些有用的方法和工具,可以让你更轻松地进行时间测试、将时间转换为不同的时区、以人类可读的格式输出时间信息,本文将介绍以下六个Python的时间日期库:● Dateutil● Arrow● Moment● Maya● Delo...

weixin_39623671的博客 1443

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

时间数据咋处理?介绍6款超好用的 Python 时间库

开源最前线(ID:OpenSourceTop)链接:https://opensource.com/article/18/4/python-datetime-libraries写过Pyth...

SeizeeveryDay的博客 154

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

6 款 超好用的 Python 时间库_python中可以实现获取计算机时钟信息的库是

开源最前线(ID:OpenSourceTop)链接:https://opensource.com/article/18/4/python-datetime-libraries写过Python程序的人都知道,Python日期和时间的处理非常繁琐和麻烦。除了将字符串转换为更有用的 Python 对象之外,还有许多库具有一些有用的方法和工具,可以让你更轻松地进行时间测试、将时间转换为不同的时区、以人类可读的格式输出时间信息,本文将介绍以下六个Python的时间日期库:● Dateutil。

2401_89722274的博客 944
上一篇: 面试官问我Python日历模块,我直接用Flask开发Web版日历应用给他
下一篇: 开发效率倍增!推荐6款VS Code插件
菜鸟学Python
博客等级 码龄9年 8087粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值