Python学习笔记23:进阶篇(十二)常见标准库使用之日期时间功能datetime模块的学习使用

news2024/11/18 9:20:57

前言

本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。

根据模块知识,一次讲解单个或者多个模块的内容。

教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html

日期和时间

日期和时间的处理,可以说是很常见的业务了,覆盖各种产品的方方面面。

datetime

datetime模块是Python的标准库模块之一。这个模块提供了丰富且强大的功能来处理日期和时间,包括日期(date)、时间(time)、日期时间组合(datetime)、时间间隔(timedelta)以及时区信息(timezone)等类,支持日期和时间的创建、格式化、计算和比较等操作。

date

这个类只处理日期,不包含时间部分。

常用函数
  1. 构造函数。我们可以根据年月日直接创建一个任意日期的对象。
from datetime import date

# 创建一个日期
birthday= date(1996, 10, 3)
print("明月望秋思的生日是:",birthday)

在这里插入图片描述

  1. today函数。获取今天的日期。

today = date.today()
print(“今天是:”, today)

在这里插入图片描述

  1. 成员属性:获取年月日信息
# 获取成员属性
year, month, day = birthday.year, birthday.month, birthday.day
print(f"出生年份: {year}, 月份: {month}, 日: {day}")

在这里插入图片描述

  1. birthday.strftime格式化日期
# 格式化日期
formatted_birthday = birthday.strftime("%Y年%m月%d日")
print("格式化后的生日:", formatted_birthday)

在这里插入图片描述

  1. 比较日期大小

直接大于小于等于符号比较,特别方便。

# 比较日期大小
before_date = date(1996, 10, 1)
if birthday < before_date:
    print("生日在之前或同一天")
else:
    print("生日在之后")
after_date = date(1996, 10, 8)
if birthday < before_date:
    print("生日在之后或同一天")
else:
    print("生日在之前")
equal_date = date(1996, 10, 3)
if birthday == before_date:
    print("生日在同一天")
else:
    print("生日在之前或之后")

在这里插入图片描述

  1. 计算偏移日期
from datetime import date, timedelta

one_week_later = today+ timedelta(weeks=1)
print("一周后是:", one_week_later)

在这里插入图片描述

  1. 计算日期差值
another_date = date(2024, 7, 3)
delta = another_date - today
print("两日期间相差天数:", delta.days)

在这里插入图片描述
正好和日期偏移的对上。

ps: Java的日期差值就没办法这么一减就完事了。。。

  1. 特定日期属性

weekday = today.isoweekday() # Monday is 1 and Sunday is 7
print(“今天是这周的第”, weekday, “天”)

day_of_year = birthday.toordinal() - date(birthday.year, 1, 1).toordinal() + 1
print(“生日是一年中的第”, day_of_year, “天”)

在这里插入图片描述
这些函数,基本上能满足常见日期的业务要求,不能直接完成的也可以通过这些函数简介完成,无非就是循环组合使用。

time

time类用于表示一天中的时间(小时、分钟、秒、微秒),不包含任何日期信息。它主要用于处理时间的小时、分钟、秒和微秒部分。

  1. 构造函数: 指定时间创建对象。注意如果你不填入参数,创建出的时间是00:00:00
from datetime import time

# 12点34分56秒
t = time(12, 34, 56)
print(t)

在这里插入图片描述

  1. 成员属性:获取时分秒信息
t = time(12, 34, 56, 78)
hour, minute, second, microsecond = t.hour, t.minute, t.second, t.microsecond
print(f"小时: {hour}, 分钟: {minute}, 秒: {second}, 微秒: {microsecond}")

在这里插入图片描述

  1. 时间比较

也是大于小于等于比较就行,这里就只写一个小于的

t1 = time(14, 0)
t2 = time(15, 30)

if t1 < t2:
    print("t1在t2之前")
else:
    print("t1在t2之后或相同")

在这里插入图片描述

date类和time只能单独表示日期或单独表示时间,但是我们常见都是日期时间一起操作和使用,所以还有一个datetime。

datetime

datetime类是处理日期和时间最常用的类,它结合了date和time的功能,可以表示具体的日期和时间,包括年、月、日、时、分、秒和微秒,并支持时区。

  1. 获取当前日期和时间
from datetime import datetime

now = datetime.now()
print("当前日期和时间:", now)

在这里插入图片描述
通常在需要保存或者需要确定当前时间的时候使用。

  1. 指定日期和时间创建对象
dt = datetime(2024, 6, 26, 22, 0, 0)
print("指定日期时间:", dt)

在这里插入图片描述

  1. 成员属性:获取日期时间中的年月日时分秒等信息
year, month, day = dt.year, dt.month, dt.day
hour, minute, second, microsecond = dt.hour, dt.minute, dt.second, dt.microsecond
print(f"年: {year}, 月: {month}, 日: {day}, 时: {hour}, 分: {minute}, 秒: {second}, 微秒: {microsecond}")

在这里插入图片描述

  1. 格式化输出
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print("格式化日期时间:", formatted_dt)

在这里插入图片描述

  1. 日期偏移
    其实在date中用过,不过这里多了时间,但是时间是不会变得
one_day_later = dt + timedelta(days=1)
print("一天后:", one_day_later)

在这里插入图片描述

  1. 计算差值
    date中也用过,不过由于时间的存在,从时间开始计算差值。

another_dt = datetime(2024, 6, 27, 16, 0, 0)
delta = another_dt - dt
print(“时间差:”, delta)
在这里插入图片描述
大家计算一下,是不是正好查18个小时。

  1. 时区处理:datetime可以处理带时区的日期时间
utc_plus_8 = timezone(timedelta(hours=8))
dt_with_timezone = datetime.now(utc_plus_8)
print("带有时区的日期时间:", dt_with_timezone)

# 时区转换
utc_dt = dt_with_timezone.astimezone(timezone.utc)
print("转换到UTC时间:", utc_dt)

在这里插入图片描述
有些应用的默认时区不一定是东八区,就会导致我们获取到的日期时间不对,这个时候我们就可以转换时区。

  1. 特定日期属性
weekday = dt.isoweekday() 
print("星期几:", weekday)

day_of_year = dt.timetuple().tm_yday
print("一年中的第几天:", day_of_year)

在这里插入图片描述

  1. 时间戳转换

可以使得日期时间和时间戳互相转换。有很多时候我们需要日期时间,给的是时间戳。或者我们有日期时间但是需要提供给时间戳。常见的就是接口请求,参数是时间戳,我们只有日期时间。业务处理中获取到接口请求时间给的是时间戳我们要转成日期时间。

timestamp = dt.timestamp()
print("时间戳:", timestamp)
from_timestamp = datetime.fromtimestamp(timestamp)
print("从时间戳转换回来的日期时间:", from_timestamp) 

在这里插入图片描述

结尾

时间日期的相关功能是经常需要用到,因为日期时间的处理处处可见。不能跳过,要自己敲一遍。

作业

  1. 使用date类
  2. 使用time类
  3. 使用datetime类
  4. 使用timedelta类(中间有用到没有单独记)

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

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

相关文章

什么可以申请商标:企业和个人申请注册商标攻略!

常见的商标类型有汉字、 拼音或英文、有图形&#xff0c;还有把各种元素混合在一起的&#xff0c;还有声音商标和立体商标等&#xff0c;不过对普通企业相对来说很少用到&#xff0c;普推商标知产老杨看到的是&#xff0c;中小企业使用文字商标的比较居多&#xff0c;识别区分相…

thinksboard新建菜单

1.打开目录\thingsboard\ui-ngx\src\app\modules\home\pages新增npages文件夹 2.新增npages.module.ts以及npages-routing.module.ts控制文件&#xff0c;以及页面展示文件npages.component.html,npages.component.scss,npages.component.ts 3.打开npages.component.ts文件&…

机器人自主学习方法学习

各类算法的优缺点 原理&#xff1a; 该结构中初始的知识为0&#xff0c;不存在任何先验知识&#xff0c;让机器人与环境交互不断获得经验&#xff0c;是一个增量学习的过程。 算法举例 基于强化学习的开源算法及工具 OpenAI Gym&#xff1a;用于开发和比较强化学习算法的工具…

山水风景视频素材去哪里下?去哪里找?山水风景下载网站分享

在这个数字时代&#xff0c;视频已经成为最直观、有效的传达情感和分享故事的工具。对于那些渴望通过视频传递视觉美感和情感共鸣的创作者来说&#xff0c;拥有高质量的山水风景视频素材是关键。互联网虽然是一个信息量庞大的平台&#xff0c;但找到令人赞叹的山水风景视频素材…

上下文管理器在Python中的妙用

更多Python学习内容&#xff1a;ipengtao.com Python上下文管理器是一个非常强大的工具&#xff0c;它能够帮助开发者在特定代码块前后自动执行特定的操作&#xff0c;常用于资源管理&#xff0c;如文件操作、数据库连接和锁定等。本文将详细介绍Python上下文管理器的概念、使用…

Arduino - MG996R

Arduino - MG996R In this tutorial, we are going to learn how to use the MG996R high-torque servo motor with Arduino. 在本教程中&#xff0c;我们将学习如何将MG996R高扭矩伺服电机与Arduino一起使用。 Hardware Required 所需硬件 1Arduino UNO or Genuino UNO Ard…

Python终于可以在线编程了!

优势 在线编程&#xff0c;轻量级&#xff0c;无需安装Python环境。 在线编程优势&#xff1a; 无需安装和配置环境: 在线编程平台不需要用户在本地安装任何软件或配置开发环境。这对初学者和那些希望快速上手进行编程的人非常有利。跨平台兼容性: 这些平台可以在任何具有互联网…

java将html转成图片

java 将html转成图片 1.导入jar2.代码3.展示结果4.注意事项 最近有一个需求需要根据指定的样式生成图片&#xff0c;使用java原生技术有些麻烦&#xff0c;所以上网搜了下案例&#xff0c;最后发现最好用的还是html2image&#xff0c;这里进行简单总结下。 1.导入jar <!-- 用…

软件开发方法

软件开发方法 瀑布方法优势 敏捷法优势敏捷软件开发原则 激进&#xff08;Scrum&#xff09;优势 极限编程优势 精益优势 看板优势 迭代增量模型 创建软件并不是一件简单的事情&#xff1a;通常&#xff0c;开发应用程序需要不同技能的团队协同努力。如果没有战略管理&#xff…

一个去掉PDF背景水印的思路

起因 昨天测试 使用“https://github.com/VikParuchuri/marker” 将 pdf 转 Markdown的过程中&#xff0c;发现转换后的文件中会保护一些背景图片&#xff0c;是转换过程中&#xff0c;程序把背景图识别为了内容。于是想着怎么把背景图片去掉。 背景水印图片的特征 我这里拿…

2024软件设计师笔记之考点版(一考就过):26-39

软件设计师之一考就过:成绩版 考点26:类、封装、继承、多态 真题1:在面向对象方法中,两个及以上的类作为一个类的超类时,称为(多重继承),使用它可能造成子类中存在(二义性)的成员。 真题2:在面向对象方法中,多态指的是(客户类无需知道所调用方法的特定子类的实现…

SwiftUI 6.0(iOS/iPadOS 18)中全新的 Tab 以及 Sidebar+悬浮 TabView 样式

概览 看来苹果一直对 iPadOS 中标签栏&#xff08;TabView&#xff09;不甚满意。这不&#xff0c;在 WWDC 2024 中苹果又对 TabView 外观做了大幅度的进化。 现在我们可以在顶部悬浮条和左侧的 Sidebar 两种不同布局之间恣意切换 TabView 的外观啦。而且&#xff0c;这在 Swi…

ubuntu 18 虚拟机安装(3)安装mysql

ubuntu 18 虚拟机安装&#xff08;3&#xff09;安装mysql 参考 https://cloud.tencent.com/developer/article/1700780 技术分享 | MySQL 设置管理员密码无法生效一例 https://cloud.tencent.com/developer/article/2014384 在Ubuntu18.04上安装MySQL &#xff5c; 超级详细…

字节豆包 MarsCode:AI 开发工具

MarsCode 是豆包旗下的智能编程助手&#xff0c;类似 GitHub Copilot 提供以智能代码补全为代表的核心能力&#xff0c;简单试用了下&#xff0c;免费&#xff0c;使用时需要手机号登录&#xff0c;代码补全还算 ok&#xff0c;聊天功能就有点差了。 还包括一个 AI 原生 IDE&am…

EPLAN批量修改文字大小

在项目设计过程中&#xff0c;往往要批量调整文字的大小&#xff0c;如何批量修改文字大小&#xff1a; 点击需要调整的相同类的文字 右键 “属性”&#xff0c;然后在分配里找到“属性放置&#xff0c;设备标识符”这一栏 看下文字的属性在第几层 在项目数据找到层管理&…

道路救援入驻派单小程序开源版开发

道路救援入驻派单小程序开源版开发 1、用户立即救援 2、后台收到救援通知&#xff0c;派单救援师傅. 道路救援入驻派单小程序通常会包含一系列功能&#xff0c;旨在方便救援服务提供商、用户和后台管理系统之间的交互。以下是一个可能的功能列表&#xff1a; 用户端功能&…

前端框架中的前端打包(Bundling)和前端构建工具(Build Tools)的作用

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端框架中的前端打包&#xff08;Bundling&#xff09;和前端构建工具&#xff08;Build Tools&#xff09;的作用1. 引言2. 前端打包&#xff08;Bundling&#xff09;2.1 概述2.2 常见的打包工具2.2.1 Webpack2.2.2 Parcel 2.3 …

合约期VS优惠期,搞明白他们的区别才能避免很多坑!

在购买流量卡时&#xff0c;相信大家也都发现了&#xff0c;市面上的不少套餐都是有合约期和优惠期的&#xff0c;尤其是联通和移动&#xff0c;那么&#xff0c;什么是合约期&#xff1f;什么又是优惠期呢&#xff1f; ​ 其实&#xff0c;目前很多在网上办理的大流量卡都是有…

静态图和动态图中的自动求导机制详解

01 静态图与动态图的区别 之前在 [1] 中提到过&#xff0c;自动求导&#xff08;AutoDiff&#xff09;机制是当前深度学习模型训练采用的主要方法&#xff0c;而在静态图和动态图中对于自动求导的处理是不一样的。作为前置知识&#xff0c;这里简单进行介绍。 我们都知道静态…

【深度学习】tensorboard的使用

目前正在写一个训练框架&#xff0c;需要有以下几个功能&#xff1a; 1.保存模型 2.断点继续训练 3.加载模型 4.tensorboard 查询训练记录的功能 命令&#xff1a; tensorboard --logdirruns --host192.168.112.5 效果&#xff1a; import torch import torch.nn as nn impor…