首页 > 编程语言 >【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间

【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间

时间:2024-07-22 19:29:16浏览次数:17  
标签:10 输出 Python 精讲 datetime 2023 print dt

当然,让我们深入探讨Python的 datetime 模块,详细解释其功能和用法。


Python datetime 模块:时间旅行者的日志

在编程中,日期和时间的处理是一个常见但复杂的问题。幸运的是,Python的 datetime 模块为我们提供了一套全面的解决方案。这个模块不仅包括日期和时间的基本表示,还提供了丰富的方法来进行日期和时间的算术运算、格式化和解析。本文将详细介绍 datetime 模块的各个方面,并通过实例演示其应用。

前言

datetime 模块是Python标准库的一部分,广泛用于需要日期和时间计算的应用程序,如日志记录、调度和数据时间戳。它的强大功能和灵活性使其成为Python标准库中不可或缺的一部分。

一、datetime模块简介

datetime 模块提供了日期和时间的类,用于处理日期和时间的算术运算。这个模块包括 datetimedatetimetimedelta 等类,以及 tzinfo 接口和 timezone 类。

二、常用类和方法

datetime.date

date 类用于表示一个具体的日期,包括年份、月份和日数。它提供了以下属性和方法:

  • year:年份
  • month:月份
  • day:日数
  • weekday():返回星期几(0表示星期一,6表示星期日)
  • isoweekday():返回ISO规定的星期几(1表示星期一,7表示星期日)
  • isocalendar():返回一个元组,包含年份、周数和星期几
  • strftime(format):将 date 对象格式化为字符串

datetime.time

time 类表示一个具体的时间,包括小时、分钟、秒和微秒。它提供了以下属性和方法:

  • hour:小时
  • minute:分钟
  • second:秒
  • microsecond:微秒
  • strftime(format):将 time 对象格式化为字符串

datetime.datetime

datetime 类结合了日期和时间,提供了一个单一的日期时间对象。它包含了 datetime 类的所有属性,并增加了以下方法:

  • timestamp():返回时间戳(自1970年以来的秒数)
  • weekday():返回星期几(0表示星期一,6表示星期日)
  • isoweekday():返回ISO规定的星期几(1表示星期一,7表示星期日)
  • isocalendar():返回一个元组,包含年份、周数和星期几
  • strftime(format):将 datetime 对象格式化为字符串

datetime.timedelta

timedelta 类用于表示两个日期或时间之间的差异。它支持以下属性:

  • days:天数
  • seconds:秒数
  • microseconds:微秒数
  • total_seconds():返回总秒数

三、时间格式化符号

datetime 模块提供了多种格式化符号,用于将日期和时间对象格式化为字符串。以下是一些常用的格式化符号:

  • %Y:年(例如:2021)
  • %m:月
  • %d:日
  • %H:时(24小时制)
  • %I:时(12小时制)
  • %M:分
  • %S:秒
  • %p:上午/下午(AM/PM)

四、代码及其演示

创建 date 对象

import datetime

d = datetime.date(2023, 5, 11)
print(d.year)  # 输出:2023
print(d.month)  # 输出:5
print(d.day)  # 输出:11
print(d.isoweekday())  # 输出:4
print(d.weekday())  # 输出:3
print(d.isocalendar())  # 输出:(2023, 19, 4)

创建 time 对象

import datetime

t = datetime.time(10, 30, 15)
print(t.hour)  # 输出:10
print(t.minute)  # 输出:30
print(t.second)  # 输出:15
print(t.microsecond)  # 输出:0

创建 datetime 对象

import datetime

dt = datetime.datetime(2023, 5, 11, 10, 30, 15)
print(dt.year)  # 输出:2023
print(dt.month)  # 输出:5
print(dt.day)  # 输出:11
print(dt.hour)  # 输出:10
print(dt.minute)  # 输出:30
print(dt.second)  # 输出:15
print(dt.microsecond)  # 输出:0

使用 strftime() 方法格式化日期和时间

import datetime

d = datetime.date(2023, 5, 11)
s = d.strftime('%Y-%m-%d')
print(s)  # 输出:2023-05-11

t = datetime.time(10, 30, 15)
s = t.strftime('%H:%M:%S')
print(s)  # 输出:10:30:15

dt = datetime.datetime(2023, 5, 11, 10, 30, 15)
s = dt.strftime('%Y-%m-%d %H:%M:%S')
print(s)  # 输出:2023-05-11 10:30:15

使用 strptime() 方法解析字符串

import datetime

s = '2023-05-11 10:30:15'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt)  # 输出:2023-05-11 10:30:15

创建 timedelta 对象

import datetime

delta = datetime.timedelta(days=10)
print(delta.days)  # 输出:10

t1 = datetime.datetime(2023, 5, 11, 10, 30, 15)
t2 = datetime.datetime(2023, 5, 11, 10, 0, 0)
delta = t1 - t2
print(delta.seconds)  # 输出:1815

五、常用的函数和属性

datetime 模块还提供了一些其他有用的函数和属性,以下是其中一些常用的:

  • datetime.datetime.today() / datetime.datetime.now():返回表示当前日期和时间的对象。
  • datetime.datetime.fromtimestamp(ts):将时间戳转换为 datetime 对象。
  • datetime.datetime.astimezone(tz=None):返回带有时区信息的 datetime 对象。
  • datetime.datetime.utcoffset():返回一个 datetime 对象相对于UTC的偏移量。
  • datetime.date.today():返回表示当前日期的 date 对象。
  • datetime.datetime.combine(date, time):将一个 date 对象和一个 time 对象组合成一个 datetime 对象。

获取当前日期和时间

import datetime

dt_now = datetime.datetime.now()
dt_today = datetime.datetime.today()

print(dt_now)  # 输出:当前时间
print(dt_today)  # 输出:当前日期和时间

将时间戳转换为 datetime 对象

import datetime

ts = 1686790215.0  # 时间戳
dt = datetime.datetime.fromtimestamp(ts)
print(dt)  # 输出:2023-05-12 02:30:15

处理时区

在这里插入图片描述

import datetime

dt = datetime.datetime(2023, 5, 11, 10, 30, 15)
tzinfo = datetime.timezone(datetime.timedelta(hours=8))
dt2 = dt.astimezone(tz=tzinfo)

print(dt2)  # 输出:2023-05-11 18:30:15+08:00

获取当前日期

import datetime

d_today = datetime.date.today()

print(d_today)  # 输出:当前日期

组合日期和时间

import datetime

d = datetime.date(2023, 5, 11)
t = datetime.time(10, 30, 15)
dt = datetime.datetime.combine(d, t)

print(dt)  # 输出:2023-05-11 10:30:15

结语

通过本文的介绍,我们可以看到 datetime 模块提供了一组强大的工具来处理日期和时间相关的问题。学会了使用这些工具,我们就可以方便地进行日期和时间相关的计算、比较和格式化,从而使程序更具可读性和可维护性。无论是处理日志记录、数据时间戳还是任务调度,datetime 模块都能助你一臂之力。


希望这篇文章能帮助您更好地理解和使用Python的 datetime 模块。如果您有任何

标签:10,输出,Python,精讲,datetime,2023,print,dt
From: https://blog.csdn.net/qq_33877849/article/details/140617776

相关文章

  • Python学习-九大数据类型整合,详细讲解
    目录1.int(整型)2.float(浮点型)3.Bool(布尔类型)4.Str(字符串类型)5.None(空值)6.List(列表)7.Tuple(元组)8.Dict(字典)9.Set(集合)(字典,列表,元组,字符串知识点可能不全,可以参考本人之前发的博客进行学习,加油。)1.int(整型)特点和用途:1.可以表示正整数、负整数......
  • Python学习—函数篇 面面俱到,细致讲解
    目录1.函数目的2.函数定义3.函数的调用4.函数的形参,实参5.函数的返回值1.返回一个值2.返回多个值3.没有返回值4.返回None6.函数的参数类型1.必需参数2.关键字参数3.默认参数4.可变参数5.关键字可变参数7.匿名函数基本语法示例1.函数目的在编程中,定......
  • Python—装饰器
    Python装饰器(decorators)是一种强大且灵活的特性,它允许在不修改原有函数代码的情况下,为函数增加新的功能。装饰器本质上是一个函数,它可以接收一个函数作为参数,并返回一个新的函数。这个新函数是对原函数的一种包装或增强。一、示例详解importrandomimporttimedata=[ra......
  • 哔哩哔哩_B站_Bilibili视频弹幕爬取与数据分析python
    ​B站弹幕爬取与数据分析一、项目背景在互联网时代,用户生成内容(UGC)成为了研究社交行为和文化趋势的重要数据来源。B站(哔哩哔哩)作为一个主要的弹幕视频分享平台,聚集了大量的用户评论和互动数据。弹幕作为一种实时的用户反馈形式,具有即时性和高互动性的特点,为数据分析提供了丰富......
  • [oeasy]python0026_调试程序_pdb3_帮助_help_求助_文档
    调试程序_debug_next_下一步_list_pdb3......
  • (三)人工智能之Python入门
    目录(一)环境准备1.1、安装Python1.2、pycharm安装(二)python基础知识2.1、变量和数据类型2.2、列表2.3、字典2.4、元组2.5、循环和条件语句2.6、函数(三)python入门实例 3.1、线性回归任务3.2、线性回归的基本概念1、自变量和因变量:2、线性关系:3、目标4、线性回......
  • python 风云4号云顶温度处理
    根据网上的一些关于风云4号卫星的数据处理方法与本人自己的修改风云4号卫星云顶温度出图代码如下:对于色斑的选择下一步还需要继续修改和精进#!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Suyue@file:CTT_map.py@time:2024/06/26@desc:"""importnumpyas......
  • 在 Jupyter Notebook 中使用Python虚拟环境
    在JupyterNotebook和Python中使用虚拟环境目录使用Virtualenv/venv创建虚拟环境使用Anaconda创建虚拟环境将虚拟环境添加到JupyterNotebook从JupyterNotebook中删除虚拟环境 在我们开始之前,什么是虚拟环境?为什么需要它?虚拟环境是Python的一个独立工作......
  • python面向对象三大特性(继承、多态、封装)之继承
    来吧,下面来具体说一下面向对象的三大特性:所谓封装、多态和继承。我们先来说一下继承。所谓继承,顾名思义,子类继承父类的属性,包括数据属性和函数属性。写个简单的例子吧:1.简单的继承classAnimal:need_substance='water'def__init__(self):print('这是一......
  • 7月22号python 每日一题
    7月22号python每日一题LCR121.寻找目标值-二维数组难度:中等m*n的二维数组plants记录了园林景观的植物排布情况,具有以下特性:每行中,每棵植物的右侧相邻植物不矮于该植物;每列中,每棵植物的下侧相邻植物不矮于该植物。请判断plants中是否存在目标高度值target。示......