【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 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径…...
如何用JD-GUI轻松破解Java字节码:Java反编译终极指南
如何用JD-GUI轻松破解Java字节码:Java反编译终极指南 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui 你是否曾面对只有编译后的.class文件却急需查看源码的困境?当你需要分析第三…...
原创文档:基于改进YOLO11算法的芯片微缺陷检测系统设计与实现
摘要:芯片制造过程中的微小缺陷(5-7像素)检测是质量控制的关键环节,但现有目标检测算法在处理此类微小目标时存在特征信息丢失、检测精度低和漏检率高等问题。针对上述问题,本文提出了一种基于YOLO11的改进检测方法YOL…...
如何快速配置虚拟控制器:从零开始的完整vJoy教程
如何快速配置虚拟控制器:从零开始的完整vJoy教程 【免费下载链接】vJoy Virtual Joystick 项目地址: https://gitcode.com/gh_mirrors/vj/vJoy vJoy是一款功能强大的开源虚拟摇杆工具,能够帮助用户创建模拟游戏控制器,实现自定义输入映…...
基于非交换几何的认知系统量化计算模型:从 S_{NC} 的谱迹到 \mu_{FW} 的优化算法
基于非交换几何的认知系统量化计算模型:从 S_{NC} 的谱迹到 \mu_{FW} 的优化算法(认知系统的非交换几何量化)作者:方见华 单位:世毫九实验室1. 引言 (Introduction) 1.1 研究背景 认知科学的核心挑战之一,在…...
RPG Maker MV/MZ 资源解锁指南:3分钟学会游戏资源解密与加密
RPG Maker MV/MZ 资源解锁指南:3分钟学会游戏资源解密与加密 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项目地址: https://g…...
VUE--项目问题
1. useRouter():拿到路由器,可以查看路由以及使用路由器的方法们2. <el-menu-item v-for"item in router.options.routes[0].children" :index"item.path">router.options.routes[0].children 这个是路由表里的第一个路…...
3分钟免费修复语音:VoiceFixer让AI帮你拯救所有音频问题
3分钟免费修复语音:VoiceFixer让AI帮你拯救所有音频问题 【免费下载链接】voicefixer General Speech Restoration 项目地址: https://gitcode.com/gh_mirrors/vo/voicefixer 你是否经历过这些尴尬时刻?😅 录制的播客被空调噪音淹没、…...
Adobe-GenP 3.0终极指南:一键快速激活Adobe CC全系列软件的完整教程
Adobe-GenP 3.0终极指南:一键快速激活Adobe CC全系列软件的完整教程 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 你知道吗?对于创意工作者…...
如何零侵入扩展《杀戮尖塔》:ModTheSpire模组加载器全解析
如何零侵入扩展《杀戮尖塔》:ModTheSpire模组加载器全解析 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 你是否曾经想在《杀戮尖塔》中添加新角色、新卡牌或改变游戏机制…...
从NeRF到3DGS:为什么说球谐函数是处理视角相关外观的‘瑞士军刀’?
从NeRF到3DGS:球谐函数如何成为视角相关建模的终极工具 在计算机图形学和三维重建领域,视角相关外观(view-dependent appearance)的建模一直是核心挑战之一。想象一下金属表面随着观察角度变化而产生的光泽变化,或者玻璃材质在不同视角下呈现…...
