当前位置: 首页 > article >正文

Python datetime 模块的高级应用

Python datetime 模块的高级应用

  • 介绍
    • 方法
      • 时区处理
      • 日期格式化
      • 日期计算
      • 常见问题及解决方案
      • 代码
        • 日历应用
        • 时间序列分析


介绍

datetime 模块是 Python 中用于处理日期和时间的标准库模块。它提供了日期和时间类型(datetimedatetime)以及与日期和时间相关的各种操作函数。以下是一些 datetime 模块的高级应用。

方法

这个模块的方法介绍:

方法描述
now()返回当前日期和时间。
combine(date, time)将给定的日期和时间合并成一个新的datetime对象。
strptime(date_string, format)将字符串解析为datetime对象,需要指定字符串的格式。
strftime(format)将datetime对象格式化为指定格式的字符串。
date()返回日期部分。
time()返回时间部分。
replace(year, month, day, hour, minute, second, microsecond)返回一个新的datetime对象,用给定的参数替换原对象中的对应部分。
timetuple()返回表示datetime对象的时间元组。
timestamp()返回POSIX时间戳。
weekday()返回星期几,星期一为0,星期日为6。
isoweekday()返回星期几,星期一为1,星期日为7。
isocalendar()返回ISO格式的年份、周数和星期几的元组。
isoformat()返回ISO 8601格式的字符串表示。
utcoffset()返回UTC偏移量。
dst()返回夏令时调整的偏移量。
tzname()返回时区名称。

时区处理

Python 3.9 之前,datetime 模块的时区支持有限,通常需要与第三方库如 pytzdateutil 结合使用。从 Python 3.9 开始,datetime 模块内置了对自定义时区的支持。

from datetime import datetime, timezone

# 创建一个 UTC 时间戳
utc_dt = datetime.now(timezone.utc)
print(utc_dt)
# 创建一个本地时间戳(我所在的时区是 Asia/Shanghai)
local_dt = datetime.now()
print(local_dt)
# 转换本地时间到 UTC 时间
local_dt_utc = local_dt.astimezone(timezone.utc)
print(local_dt_utc)
# 转换 UTC 时间到本地时间
utc_dt_local = utc_dt.astimezone()
print(utc_dt_local)

astimezone()datetime对象的一个扩展方法。它用于将一个datetime对象从一个时区转换到另一个时区

在这里插入图片描述

日期格式化

datetime 对象提供了 strftimestrptime 方法来进行日期和时间的格式化和解析。

from datetime import datetime

# 当前时间
now = datetime.now()
# 格式化当前时间为字符串
formatted_date = now.strftime('%Y-%m-%d %H:%M:%S')
print(formatted_date)
# 解析字符串为 datetime 对象
parsed_date = datetime.strptime('2023-03-21 15:00:00', '%Y-%m-%d %H:%M:%S')
print(parsed_date)

在这里插入图片描述

日期计算

datetime 对象提供了多种方法进行日期计算,如 addsubreplace 等。

from datetime import datetime, timedelta
# 当前时间
now = datetime.now()
# 添加一天
tomorrow = now + timedelta(days=1)
print(tomorrow)
# 减去一小时
yesterday = now - timedelta(hours=1)
print(yesterday)
# 替换日期和时间
new_date = now.replace(year=2020, month=1)
print(new_date)

在这里插入图片描述

常见问题及解决方案

  1. 时区转换:在使用 pytzdateutil 时,时区转换是一个常见问题。确保正确安装和导入库,并使用合适的时区对象。
  2. 日期格式不一致:在解析和格式化日期时,确保字符串格式与 strptime 方法的格式字符串相匹配。
  3. 日期计算错误:在日期计算时,确保使用正确的日期对象和方法。

代码

日历应用
from datetime import datetime, timedelta
# 获取当前日期
today = datetime.now()
# 打印本周每一天
for day_offset in range(7):
    day = today + timedelta(days=day_offset)
    print(day.strftime('%Y-%m-%d'))

在这里插入图片描述

时间序列分析
from datetime import datetime, timedelta

# 创建一个时间序列
times = [datetime(2023, 1, 1) + timedelta(days=i) for i in range(100)]
# 打印时间序列
for time in times:
    print(time.strftime('%Y-%m-%d'))

在这里插入图片描述


http://www.kler.cn/a/231610.html

相关文章:

  • 基于 MONAI 的 3D 图像分割任务2(Brain Tumour 和 SwinUNETR 训练)
  • UE5 材质里面画圆锯齿严重的问题
  • 2.5D视觉——Aruco码定位检测
  • hadoop+wsl 10.255.255.254,BlockMissingException: Could not obtain block: 踩坑
  • STM32设计井下瓦斯检测联网WIFI加Zigbee多路节点协调器传输
  • Tomcat启动过程中cmd窗口(控制台)中文乱码的问题
  • [机器学习]K-means——聚类算法
  • 表单标记(html)
  • 初识C++(3)
  • 【QT+QGIS跨平台编译】之二十七:【librttopo+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 嵌入式软件设计方式与方法
  • Android:国际化弹出框
  • 数据结构:双向链表
  • 负载均衡SLB
  • elasticsearch重置密码操作
  • Netty中使用编解码器框架
  • 【数据结构】二叉树的三种遍历(非递归讲解)
  • 通过docker-compose部署NGINX服务,并使该服务开机自启
  • Fink CDC数据同步(四)Mysql数据同步到Kafka
  • 数据同步工具对比——SeaTunnel 、DataX、Sqoop、Flume、Flink CDC
  • 电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)
  • golang 引入swagger(iris、gin)
  • Tkinter教程21:Listbox列表框+OptionMenu选项菜单+Combobox下拉列表框控件的使用+绑定事件
  • libevent源码解析--event,event_callback,event_base
  • 前端bug手册
  • 【npm】修改npm全局安装包的位置路径