pendulum,一个超酷的 Python 库!

22b73c9e8fbd440d8bedf56595ea5a22.jpeg

更多Python学习内容:ipengtao.com

大家好,今天为大家分享一个超酷的 Python 库 - pendulum。

Github地址:https://github.com/sdispater/pendulum

日期和时间处理在许多应用程序中都是常见的任务,然而,Python标准库中的datetime模块在某些情况下可能会显得繁琐和不够直观。Pendulum 库,它提供了更简单和更强大的日期和时间处理功能。本文将深入介绍 Pendulum 库的基本概念、安装方法以及详细的示例代码,以帮助大家了解如何使用 Pendulum 来处理日期和时间。

什么是 Pendulum?

Pendulum 是一个 Python 库,旨在提供更直观和功能丰富的日期和时间操作功能。它建立在 Python 标准库中的 datetime 模块之上,提供了更多功能、更简单的 API,并解决了时区和日期时间算术等问题。

Pendulum 的主要特点包括:

  • 直观的 API:Pendulum 提供了易于理解和使用的方法和属性,使日期和时间操作更加直观。

  • 时区感知:Pendulum 对时区的支持非常强大,可以轻松处理不同时区的日期和时间。

  • 不可变性:Pendulum 中的日期时间对象是不可变的,这意味着一旦创建,它们不能被修改,而是返回新的对象。

  • 日期时间算术:Pendulum 提供了丰富的日期时间算术功能,包括相对日期、日期范围和时差计算。

  • 格式化和解析:Pendulum 支持多种日期时间格式的解析和格式化,能够轻松地与其他系统和文件格式交互。

安装 Pendulum

要开始使用 Pendulum,首先需要安装它。可以使用 pip 来安装 Pendulum:

pip install pendulum

安装完成后,就可以在 Python 代码中导入 Pendulum 并开始使用它。

基本用法

创建 Pendulum 对象

使用 Pendulum 创建日期时间对象非常简单。下面是一些常见的创建方式:

import pendulum# 获取当前时间
now = pendulum.now()# 使用时间戳创建 Pendulum 对象
timestamp = 1609459200  # 2021-01-01 00:00:00
pendulum_obj = pendulum.from_timestamp(timestamp)# 使用日期字符串创建 Pendulum 对象
date_string = "2022-12-31T23:59:59"
pendulum_obj = pendulum.parse(date_string)# 指定时区创建 Pendulum 对象
pendulum_obj = pendulum.now('US/Pacific')

访问 Pendulum 对象的属性

Pendulum 对象提供了易于访问日期时间属性的方式:

import pendulumnow = pendulum.now()# 获取年份、月份、日期、小时、分钟、秒钟
year = now.year
month = now.month
day = now.day
hour = now.hour
minute = now.minute
second = now.second

格式化和解析日期时间

Pendulum 支持丰富的日期时间格式化和解析功能:

import pendulum# 格式化日期时间为字符串
now = pendulum.now()
formatted = now.to_iso8601_string()
print(formatted)  # 例如:2022-12-31T23:59:59+00:00# 解析字符串为 Pendulum 对象
date_string = "2022-12-31T23:59:59"
parsed = pendulum.from_format(date_string, 'YYYY-MM-DDTHH:mm:ss')

日期时间算术

Pendulum 提供了强大的日期时间算术功能,允许执行各种日期时间操作:

import pendulum# 相对日期时间算术
now = pendulum.now()
tomorrow = now.add(days=1)
next_week = now.add(weeks=1)
last_month = now.subtract(months=1)# 计算日期范围
start_date = pendulum.datetime(2022, 1, 1)
end_date = pendulum.datetime(2022, 12, 31)
date_range = pendulum.period(start_date, end_date)# 计算时差
start_time = pendulum.datetime(2022, 1, 1, 0, 0, 0)
end_time = pendulum.datetime(2022, 1, 1, 12, 0, 0)
time_diff = end_time - start_time

时区处理

Pendulum 对时区的支持非常强大,可以轻松处理不同时区的日期和时间:

import pendulum# 创建带有时区信息的 Pendulum 对象
pacific = pendulum.now('US/Pacific')# 转换时区
eastern = pacific.in_tz('US/Eastern')# 获取当前时区信息
current_timezone = pendulum.now().timezone_name

处理不同时区的时间

通过一个示例来演示 Pendulum 如何处理不同时区的时间。假设需要计算纽约和伦敦之间的时间差:

import pendulum# 创建带有时区信息的 Pendulum 对象
new_york = pendulum.now('US/Eastern')
london = pendulum.now('Europe/London')# 计算时间差
time_difference = new_york.diff(london)# 输出结果
print(f"New York Time: {new_york}")
print(f"London Time: {london}")
print(f"Time Difference: {time_difference.in_hours()} hours")

在这个示例中,首先创建了带有纽约和伦敦时区信息的 Pendulum 对象,然后使用 diff 方法计算了它们之间的时间差,并将结果以小时为单位输出。

构建一个简单的生日提醒应用

通过一个更实际的示例来展示 Pendulum 的用法。构建一个简单的生日提醒应用,用户可以输入生日日期,然后应用会计算距离生日还有多少天,并给出相应的提醒。

import pendulum# 输入生日日期
birthday = input("Enter your birthday (YYYY-MM-DD): ")# 解析输入日期为 Pendulum 对象
birthday_date = pendulum.from_format(birthday, 'YYYY-MM-DD')# 获取当前日期
today = pendulum.now()# 计算距离生日还有多少天
days_until_birthday = today.diff(birthday_date).in_days()# 判断距离生日的天数,并给出提醒
if days_until_birthday == 0:print("Happy Birthday!")
elif days_until_birthday < 0:print(f"Your birthday was {-days_until_birthday} days ago.")
else:print(f"Your birthday is in {days_until_birthday} days.")

在这个示例中,首先要求用户输入生日日期,并将其解析为 Pendulum 对象。然后,获取当前日期,计算距离生日还有多少天,并根据不同的情况给出相应的提醒。

总结

Pendulum 是一个强大的 Python 库,用于简化日期和时间处理。它提供了直观的 API、丰富的功能和强大的时区支持,使日期和时间操作更加容易和可靠。通过本文提供的示例和介绍,希望能够轻松掌握 Pendulum,并在项目中更高效地处理日期和时间。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

  100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

3b526c61665b0519246ba4e1bc34769a.png

点击“阅读原文”,获取更多学习内容

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

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

相关文章

LAYABOX:2024新年寄语

2024新年寄语 过去的一年&#xff0c;尽管许多行业面临严峻挑战和发展压力&#xff0c;小游戏领域却逆势上扬&#xff0c;年产值首次突破400亿元大关&#xff0c;众多优质小游戏企业收获颇丰。 对此&#xff0c;祝福大家&#xff0c;2024一定更好&#xff01; 过去的一年&#…

Windows CPU部署llama2量化模型并实现API接口

目录 模型部署本地运行llama2使用fastapi实现API接口常用git仓库 模型部署 从huggingface下载模型 https://huggingface.co/ 放在本地文件夹&#xff0c;如下 本地运行llama2 from ctransformers import AutoModelForCausalLMllm AutoModelForCausalLM.from_pretrained(&q…

C语言之scanf浅析

前言&#xff1a; 当有了变量&#xff0c;我们需要给变量输入值就可以使用scanf函数&#xff0c;如果需要将变量的值输出在屏幕上的时候可以使用printf函数&#xff0c;如&#xff1a; #include <stdio.h> int main() {int score 0;printf("请输⼊成绩:");sc…

YOLOv8训练损失、mAP画图功能 | 支持多结果对比,多结果绘在一个图片(科研必备)

一、本文介绍 本文给大家带来的是YOLOv8系列的绘图功能&#xff0c;我将向大家介绍YOLO系列的绘图功能。我们在进行实验时&#xff0c;经常需要比较多个结果&#xff0c;针对这一问题&#xff0c;我写了点代码来解决这个问题&#xff0c;它可以根据训练结果绘制损失(loss)和mA…

Docker support for NVIDIA GPU Accelerated Computing on WSL 2

Docker support for NVIDIA GPU Accelerated Computing on WSL 2 0. 背景1. 安装 Docker Desktop2. 配置 Docker Desktop3. WLS Ubuntu 配置4. 安装 Docker-ce5. 安装 NVIDIA Container Toolkit6. 配置 Docker7. 运行一个 Sample Workload 0. 背景 今天尝试一下 NVIDIA GPU 在…

启封涂料行业ERP需求分析和方案分享

涂料制造业是一个庞大而繁荣的行业 它广泛用于建筑、汽车、电子、基础设施和消费品。涂料行业生产不同的涂料&#xff0c;如装饰涂料、工业涂料、汽车涂料和防护涂料。除此之外&#xff0c;对涂料出口的需求不断增长&#xff0c;这增加了增长和扩张的机会。近年来&#xff0c;…

微信小程序-API

微信小程序第三章 文章目录 微信小程序第三章3. API3.1 分类3.2 常用 API 的使用方法3.2.1 小程序生命周期3.2.1.1 onLaunch3.2.1.2 onShow3.2.1.3 onHide3.2.1.4 onError 3.2.2 路由3.2.2.1 wx.navigateTo3.2.2.2 wx.redirectTo3.2.2.3 wx.reLaunch3.2.2.4 wx.switchTab 3.2.3…

polar CTF WEB-veryphp

1、题目 <?php error_reporting(0); highlight_file(__FILE__); include("config.php"); class qwq {function __wakeup(){die("Access Denied!");}static function oao(){show_source("config.php");} } $str file_get_contents("ph…

基于PHP的校园代购商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的校园代购商城系统 一 介绍 此校园代购商城系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。(附带参考设计文档) 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二 功能 …

【ChatGPT 默认强化学习策略】PPO 近端策略优化算法

PPO 近端策略优化算法 PPO 概率比率裁剪 演员-评论家算法演员-评论家算法&#xff1a;多智能体强化学习核心框架概率比率裁剪&#xff1a;逐步进行变化的方法PPO 目标函数的设计重要性采样KL散度 PPO 概率比率裁剪 演员-评论家算法 论文链接&#xff1a;https://arxiv.org…

Redis缓存穿透,缓存击穿,缓存雪崩

文章目录 Redis缓存穿透&#xff0c;缓存击穿&#xff0c;缓存雪崩1. 缓存穿透1.1 解决方案1&#xff1a;缓存空数据1.2 解决方案2&#xff1a;使用布隆过滤器1.2.1 布隆过滤器介绍 2. 缓存击穿2.1 解决方案1&#xff1a;互斥锁2.2 解决方案2&#xff1a;逻辑过期 3. 缓存雪崩3…

摄影-基础知识

光圈&#xff0c;快门&#xff0c;感光度决定了一张相片的受光程度 光圈 瞳孔 快门 约等于 眼皮(但是实际上并不是&#xff0c;更像镜头盖) 感光度 视网膜上的感光能力 光圈越大 景深越大&#xff0c;也就是画面越模糊 快门时间越短&#xff0c;越能抓住某个瞬间 快门时间…