【Python】time模块和datetime模块的部分函数说明
时间戳与日期
在说到这俩模块之前,首先先明确几个概念:
- 时间戳是个很单纯的东西,没有“时区”一说,因为时间戳本质上是经过的时间。
- 日常生活中接触到的“日期”、“某点某时某分”准确的说是时间点,都是有时区概念的。
在日常生活中如果说现在几点但不说明时区的话就都视为本地时区,这在datetime中也一样,不额外附上时区信息的话都视为本地时区。
time模块和datetime模块
在time模块中比较常用的函数有time.time、time.gmtime、time.localtime、time.mktime,其中time.gmtime的“gm”代表的含义是“Greenwich Mean Time(格林尼治平均时间)”,也就是该函数会返回英国时间,也可以理解为UTC-0。我们处在东八区,为UTC+8,如果使用time.gmtime的话获取到的时间往往会少8小时,要改用time.localtime才能获取到正确的时间。
而datetime模块比time模块要稍微复杂那么一些,用文字也不好表达,之后用图表的方式进行叙述。datetime更加复杂的一大原因是time模块是 面向函数,而datetime模块是 面向对象。具体来说就是:
time.struct_time这个类里头没有什么函数可以调用,就像是C语言里的结构体那样仅存放信息,虽然可以携带“时区”信息但许多模块对其进行处理时会将其中的时区信息无视掉(所以经常出现转换的时间与预期不符的问题);datetime.datetime则不一样,这个类里头有不少的函数/方法,而方法与类对象是强耦合关系,类对象中有无时区信息都会对方法的执行结果造成显著影响。在官方文档中有明确提及datetime.datetime对象有“naive(简单型)”和“aware(感知型)”这两种类型,虽然看上去很复杂但实际上也就“有无携带时区信息”的差别罢了:有“时区信息”的就是aware(感知型),没有的则是naive(简单型)。可通过获取datetime.datetime对象tzinfo属性来判断其是否带有时区信息。- 一般情况下
datetime.datetime对象往往是naive(简单型),也就是在你不经意的时候你以为它是“UTC”但实际上是“LMT”,例如通过datetime.datetime.utcnow获得的datetime对象竟然是不带时区的,如果不查官方文档的话甚至还以为它会带着时区信息的,而官方文档也强调了这一点:[datetime.utcnow]datetime.utcnow()返回的当前 UTC 日期和时间是一个 本机 datetime 对象,哈哈哈哈哈直接气炸了好吧。(所谓的“本机”也就是本地的意思,说直白点就是datetime.datetime.utcnow返回的是个naive-datetime对象); - 补充说明,“
函数(function)”和“方法(method)”有着轻微差别,具体点就是“首参有无绑定特定对象”的区别。这里不展开说明避免跑题,感兴趣的可以自己了解下。简单使用下@staticmethod和@classmethod将更直观地看出函数(function)和方法(method)的差异。
图表说明:
以下为个人总结的图片表格:

补充:
- 上面说过,
datetime.datetime类对象可分为“naive(简单型)”和“aware(感知型)”这两种东西,也就是一个没时区信息(默认本地时区),一个有时区信息。
简单型datetime的tzinfo(时区信息)为None,而感知型的为datetime.timezone对象。
在有关创建datetime对象的函数中,如果没有指定时区,返回的datetime对象将全是“简单型”(如有特例请指正)。 - 有两种生成时区对象datetime.timezone的方法:
datetime.timezone(datetime.timedelta(hours=8,minutes=30))
pytz.timezone('Asia/Shanghai')
其中关于pytz.timezone的可支持时区(即传入的参数)可通过pytz.all_timezones这个列表进行查询。pytz为系统自带模块。 - 以下是能够生成aware-datetime对象的函数:
datetime.datetime.now
datetime.datetime.fromtimestamp
datetime.datetime.replace
datetime.datetime.astimezone
datetime.datetime.strftime - 通常使用
datetime.datetime.replace进行naive-datetime和aware-datetime的相互转换,例如datetime.datetime.utcnow返回的是不带时区信息的naive-datetime对象,需要调用datetime.datetime.replace来转化为aware-datetime对象便于后期处理。
虽然才想起来需要补充代码,但想想还是算了(编写样例代码好麻烦的说实话),而且本博文的性质更偏向于“文档说明”而不是“应用举例”。关于time模块和datetime模块的具体用法需自行搜索以及测试。
顺带一提,如果出现运行结果与本文描述的不一致,可能是python版本的差异造成的,此时需要参考官方文档。我的Python版本为3.7.8,(当前Python都已经出到3.11了
参考资料:
- time模块:(官方文档)https://docs.python.org/zh-cn/3.7/library/time.html
- datetime模块:(官方文档)https://docs.python.org/zh-cn/3.7/library/datetime.html
- 通过pytz获取指定时区:(博客园)https://www.cnblogs.com/meitian/p/12839164.html
- 通过datetime.timezone获取简单时区(简单时区不包含夏令时):(官方文档)https://docs.python.org/zh-cn/3.7/library/datetime.html#timezone-objects
- Python3中datetime不同时区转换介绍与踩坑:(博客园)https://www.cnblogs.com/AcAc-t/p/python3_datetime_timezone.html
未经本人同意不得擅自转载,本博文发布于CSDN:(CSDN)https://blog.csdn.net/weixin_44733774/article/details/133475034
相关文章:
【Python】time模块和datetime模块的部分函数说明
时间戳与日期 在说到这俩模块之前,首先先明确几个概念: 时间戳是个很单纯的东西,没有“时区”一说,因为时间戳本质上是经过的时间。日常生活中接触到的“日期”、“某点某时某分”准确的说是时间点,都是有时区概念的…...
Python 无废话-基础知识元组Tuple详讲
“元组 Tuple”是一个有序、不可变的序列集合,元组的元素可以包含任意类型的数据,如整数、浮点数、字符串等,用()表示,如下示例: 元组特征 1) 元组中的各个元素,可以具有不相同的数据类型,如 T…...
【Win】Microsoft Spy++学习笔记
参考资料 《用VisualStudio\Spy查窗口句柄,监控窗口消息》 1. 安装 Spy是VS中的工具,所以直接安装VS就可以了; 2. 检查应用程序架构 ChatGPT-Bing: 对于窗口应用程序分析,确定应用程序是32位还是64位是很重要的,因…...
如何解决版本不兼容Jar包冲突问题
如何解决版本不兼容Jar包冲突问题 引言 “老婆”和“妈妈”同时掉进水里,先救谁? 常言道:编码五分钟,解冲突两小时。作为Java开发来说,第一眼见到ClassNotFoundException、 NoSuchMethodException这些异常来说&…...
数据结构—归并排序-C语言实现
引言:归并排序跟快速排序一样,都运用到了分治的算法,但是归并排序是一种稳定的算法,同时也具备高效,其时间复杂度为O(N*logN) 算法图解: 然后开始归并: 就是这个思想,拆成最小子问题…...
Multiple CORS header ‘Access-Control-Allow-Origin‘ not allowed
今天在修改天天生鲜超市项目的时候,因为使用了前后端分离模式,前端通过网关统一转发请求到后端服务,但是第一次使用就遇到了问题,比如跨域问题: 但是,其实网关里是有配置跨域的,只是忘了把前端项…...
msvcp100.dll丢失怎样修复,msvcp100.dll丢失问题全面解析
msvcp100.dll是一个动态链接库文件,属于 Microsoft Visual C Redistributable 的一个组件。它包含了 C 运行时库,这些库在运行程序时会被加载到内存中。msvcp100.dll文件的主要作用是为基于 Visual C 编写的程序提供必要的运行时支持。 当您运行一个基于…...
最新AI智能问答系统源码/AI绘画系统源码/支持GPT联网提问/Prompt应用+支持国内AI提问模型
一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…...
全连接网络实现回归【房价预测的数据】
也是分为data,model,train,test import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optimclass FCNet(nn.Module):def __init__(self):super(FCNet,self).__init__()self.fc1 nn.Linear(331,200)s…...
mysql八股
1、请你说说mysql索引,以及它们的好处和坏处 检索效率、存储资源、索引 索引就像指向表行的指针,是一个允许查询操作快速确定哪些行符合WHERE子句中的条件,并检索到这些行的其他列值的数据结构索引主要有普通索引、唯一索引、主键索引、外键…...
MATLAB算法实战应用案例精讲-【优化算法】狐猴优化器(LO)(附MATLAB代码实现)
代码实现 MATLAB LO.m %======================================================================= % Lemurs Optimizer: A New Metaheuristic Algorithm % for Global Optimization (LO)% This work is published in Journal of "Applied …...
C#WPF动态资源和静态资源应用实例
本文实例演示C#WPF动态资源和静态资源应用 一、资源概述 静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了。 动态资源(DynamicResource)指的是在程序运行过程中然会去访问资源。 WPF中,每个界面元素都含有一个名为Resources…...
游戏逆向中的 NoClip 手段和安全应对方式
文章目录 墙壁边界寻找碰撞 NoClip 是一种典型的黑客行为,允许你穿过墙壁,所以 NoClip 又可以认为是避免碰撞体积的行为 墙壁边界 游戏中设置了碰撞体作为墙壁边界,是 玩家对象 和墙壁发生了碰撞,而不是 相机 玩家对象有他的 X…...
nodejs+vue流浪猫狗救助领养elementui
第三章 系统分析 10 3.1需求分析 10 3.2可行性分析 10 3.2.1技术可行性:技术背景 10 3.2.2经济可行性 11 3.2.3操作可行性: 11 3.3性能分析 11 3.4系统操作流程 12 3.4.1管理员登录流程 12 3.4.2信息添加流程 12 3.4.3信息删除流程 13 第四章 系统设计与…...
Css Flex 弹性布局中的换行与溢出处理方法
Css Flex 弹性布局中的换行与溢出处理方法 CSS弹性布局(Flex)是CSS3中的一种新的布局方式,它能够帮助我们更加灵活地布局元素。在Flex弹性布局中,元素的布局仅依赖于父容器的设置,而不再需要复杂的相对或绝对定位。本…...
linux系统与应用
Windows中的硬盘和盘符的关系; 硬盘通常为一块到两块;数量与盘符没有直接关系;一块硬盘可以分为多个盘符,如c,d,e,f,g等;当然理论上也可以一块硬盘只有一个盘符;学习linux时,最好使用固态硬盘&a…...
MySQL的结构化语言 DDL DML DQL DCL
一、SQL结构化语言介绍 数据查询语言DQL:其语句称为“数据检索语言”,用以从库中获取数据,确定数据怎样在应用程序给出,保留select是dql(也是所有sql)用的最多的动词 数据操作语言DML:其语句包括动词insert…...
P5488 差分与前缀和
传送门:洛谷 前题提要:包含了简单的生成函数思想以及多项式乘法,是一道不可多得的多项式好题.故记录一下. 题意:给定一个长为 n 的序列 a,求出其 k 阶差分或前缀和。结果的每一项都需要对 1004535809取模。 对于差分和前缀和我们分开来讨论. 先讨论前缀和部分: …...
uboot启动流程-uboot内存分配
一. uboot启动流程 _main 函数中会调用 board_init_f 函数,本文继续简单分析一下 board_init_f 函数。 具体分析 board_init_f函数的第二部分:内存分配代码。 本文继上一篇文章的学习,地址如下: uboot启动流程-涉及board_init…...
LeetCode 面试题 08.02. 迷路的机器人
文章目录 一、题目二、C# 题解 一、题目 设想有个机器人坐在一个网格的左上角,网格 r 行 c 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
