【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 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
