Python时间处理

2023-10-30

在这里想做一个初学者的教程,会不断的更新下去,把学到的有关Python时间处理的内容总结起来。初学者笔记最重要的有两点,一个是要简洁,不要长篇大论,把要点讲明白就行,第二个是要符合二八原则,尽量抓住关键的东西,不要过分的追求大而全,优先掌握关键的20%内容就很可以了。

time模块

Python时间处理,绕不过去的就是time模块,虽然这个模块用来做时间处理并不是很便捷,但是作为Python的内置模块,还是需要掌握基本的用法的。

学习时间处理,我们首先要理解,什么是时间?

关于时间的概念,简单来说,分为两个意思,时刻和时长。时刻就是时间坐标轴上的一个点,时长是一个线段。

time模块是基本用法是用来处理时刻的,在time模块中,时刻有3种表示方式

  • 时间戳(timestamp),是从1970年1月1日零时刻开始的一个秒数。
  • 时间元组(time tuple),是time模块中,用整数组合来表示时刻的方法。
  • 格式化字符串(format string),就是我们日常的用字符串表示一个时刻,例如“2021-01-01 10:00:00”。

明确这3个概念,然后就可以学习time模块的几个基本的方法。

time.time()

返回一个浮点数,获取当前时间戳。

time.mktime(arg)

接收一个时间元组参数,返回对应的时间戳。

time.localtime(arg)

接收一个时间戳参数,返回对应的时间元组对象。不带参数,返回当前时刻对应的时间元组对象。

time.strftime(format_string,struct_time)

format_string表示一个格式化字符串的表示方式,用%Y表示4位年份,%m表示月,%d表示日,%H表示时,%M表示分,%S表示秒。通过不同的组合,来表示想要的字符串格式,例如使用"%Y-%m-%d %H:%M:%S"来表示"2021-01-01 10:00:00"这种格式,使用"%Y年%m月%d日"来表示"2021年1月1日"这种格式。

struct_time是一个时间元组。整个方法就是把一个时间元组按照指定格式,返回一个字符串。不带struct_time参数的时候,默认指当前时刻。

time.strptime(time_string,format_string)

将一个时间字符串转化成对应的时间元组。time_string和format_string要格式对应才能正确转换。

time.sleep(n)

这个方法,让当前线程沉睡(挂起)n秒。

简单总结一下,我感觉time模块掌握这6个方法就够了。time.time和time.sleep单独记,time.mktime和time.localtime是时间戳和时间元组的相互转换,time.strftime和time.strptime是字符串和时间元组的相互转换。

最后补充一个内容,就是时间元组对象struct_time对象的使用。struct_time对象可以简单理解为(tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)这样一个包含9个元素的元组。可以使用元组下标的方式获取元素的值,也可以使用obj.tm_year属性的方式获取指定的值。

datetime模块

相比time模块,datetime模块在使用起来更方便,也更常用。

使用datetime模块,学会使用其中的datetime类和timedelta类就足够了。

datetime类

datetime类是datetime模块中表示日期时间的类,还有两个date类和time类,用法大同小异,不用单独学习。

导入使用: from datetime import datetime

学习一个类的使用,一般从两个方面,一是实例对象的创建,二是对象的属性和方法。

datetime类实例对象的创建

dt = datetime(year,month,day,hour,minute,second)

通过构造函数指定具体的数值来创建,以上参数默认值都是0.

dt = datetime.today() 或者 dt = datetime.now()

获取当前时刻的dt对象。

dt = datetime.fromisoformat(string)

通过string='2021-01-01 10:30:00'标准格式获取dt对象。

dt = datetime.fromtimestamp(n)

通过指定一个时间戳来创建。

dt = datetime.strptime(string,format_string)

类似time.strptime,将一个字符串转化成dt对象。

datetime类实例对象的属性

dt.year/dt.month/dt.day/dt.hour/dt.minute/dt.second

datetime类实例对象的方法

dt.isoformat() 返回标准字符串

df.isoweekday() 返回星期几

dt.timetuple() 返回time.struct_time类型

dt.strftime(format_string) 返回指定格式字符串

dt.timestamp() 返回对应的时间戳

timedelta类

前面说的时间类型都是时刻表达,下面说的timedelta类是时长的表达。

创建timedelta类实例对象

td = 两个时间对象的差值

td = timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

根据相应的时长来创建,比如,我想创建一个相距3天10小时的时长,就可以这样:

td = timedelta(days=3,hours=10)

timedelta对象的属性

td.days、td.seconds、td.microseconds只有这3个属性,其他的需要进行换算。

timedelta对象的方法

td.total_seconds()

是一个浮点数,表示td对象中包含的总秒数。

Pandas中的时间处理

3.1 Timestamp

Timestamp是pandas中时间类型的基础类。表示一个具体的时刻。Pandas中其他时间类型,归根结底,都会回归到Timestamp这个类。

Timestamp类可以单独进行创建。

pd.Timestamp(year,month,day,hour,minute,second) 通过一系列整数用构造函数创建。

pd.Timestamp(time_string) 通过表示时间的字符串进行创建。Pandas可以自动识别几乎所有常规意义上的字符串。

pd.Timestamp.now() 或者 pd.Timestamp.today() 获取当前时刻。

3.2 Timestamp对象的使用

当拥有一个Timestamp对象时,可以方便的使用对象的各种属性和方法。

属性:t.year/month/day/hour/minute/second还有其他很多,不一一列举。

方法:t.timestamp() 获取代表的时间戳

t.strftime(format_string) 获取指定字符串形式

t.timetuple() 或者代表的struct_time形式

方法还有很多,有需要再好好了解。

3.3 date_range()

date_range方法可以创建一组连续的时间,这里面每一个元素都是Timestamp类型的对象。

pd.date_range(start,periods,freq='D') start是一个字符串,表示起始时间;periods是一个整数,表示数量,freq表示频率,是一个字符串标识符,这里的D表示一天。freq有很多灵活的组合,在这里不展开详解。

pd.date_range(start,end,freq='D') start和end都是一个时间字符串,freq还是频率,这里限定的不是数量,而是开始和结束的值。

3.4 to_datetime()方法

在pandas时间处理中,经常出现大量的时间字符串,可以使用pd.to_datetime方法,快捷的把时间字符串转化成时间类型。

pd.to_datetime(seri) 处理的一般都是一个seri对象,seri对象是一组字符串类型,转换成时间类型。

3.5 dt属性

对于一个时间类型的seri对象,可以使用dt属性来操作时间。

比如:year = seri.dt.year

3.6 Timedelta

在pandas中同样也有时间间隔处理的对象。可以方便的处理时间计算。

1)创建

pd.Timedelta(value,unit)

value,是一个整数

unit,表示单位,day、hour、minute、second

pd.Timedelta(days,hours,minutes,seconds)

2)使用

属性:td.days/td.seconds

方法:td.total_seconds()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python时间处理 的相关文章

  • 在 Numpy 中切片后确定结果数组的形状

    我很难理解在 numpy 中切片后如何确定结果数组的形状 例如 我使用以下简单代码 import numpy as np array np arange 27 reshape 3 3 3 slice1 array 1 2 1 slice2
  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • 即使使用 .loc[row_indexer,col_indexer] = value 时也会设置 WithCopyWarning

    这是我的代码中得到的行之一SettingWithCopyWarning value1 Total Population value1 Total Population replace to replace value 4 然后我将其更改为
  • Python 3 __getattribute__ 与点访问行为

    我读了一些关于 python 的对象属性查找的内容 这里 https blog ionelmc ro 2015 02 09 understanding python metaclasses object attribute lookup h
  • 如何从 PyCharm 项目中获取我的“exe”[重复]

    这个问题在这里已经有答案了 通过 PyCharm 在 Python 上编写一些项目 我想从中获取一个exe文件 我尝试过 另存为 gt XXX exe 但是 当我尝试执行它时出现错误 此类操作系统不支持该文件 附注 我有win7 x64 它
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • Paramiko - 使用私钥连接 - 不是有效的 OPENSSH 私钥/公钥文件

    我正在尝试找到解决方案 但无法理解我做错了什么 在我的 Linux 服务器上 我运行了以下命令 ssh keygen t rsa 这产生了一个id rsa and id rsa pub file 然后我将它们复制到本地并尝试运行以下代码 s
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • spacy 如何使用词嵌入进行命名实体识别 (NER)?

    我正在尝试使用以下方法训练 NER 模型spaCy识别位置 人 名和组织 我试图理解如何spaCy识别文本中的实体 但我无法找到答案 从这个问题 https github com explosion spaCy issues 491在 Gi
  • 为什么我用 beautifulSoup 刮的时候有桌子,但没有 pandas

    尝试抓取条目页面转换为制表符分隔格式 主要拉出序列和 UniProt 登录号 当我跑步时 url www signalpeptide de index php sess m listspdb bacteria s details id 10
  • 如何有效地从 loadmat 函数生成的嵌套 numpy 数组中提取值?

    python中是否有更有效的方法从嵌套的python列表中提取数据 例如A array array 12000000 dtype object 我一直在使用A 0 0 0 0 当你有很多像 A 这样的数据时 这似乎不是一个有效的方法 我也用
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • 张量流:注册 numpy bfloat16 扩展

    正如我所见 tensorflow 中有 bfloat16 的 numpy 扩展 https github com tensorflow tensorflow blob 24ffe9f729160a095a5cab8f592392018280
  • Python组合目录中的所有csv文件并按日期时间排序

    我有 2 年的每日数据分成每月文件 我想将所有这些数据合并到一个按日期和时间排序的文件中 我正在使用的代码组合了所有文件 但不按顺序 我正在使用的代码 import pandas as pd import glob os import cs
  • 全局变量是 None 而不是实例 - Python

    我正在处理Python 中的全局变量 代码应该可以正常工作 但是有一个问题 我必须使用全局变量作为类的实例Back 当我运行应用程序时 它说 back is None 这应该不是真的 因为第二行setup 功能 back Back Back
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏
  • 在 Python 模块中使用 InstaLoader

    我正在尝试使用 Instaloader 下载与主题标签相关的照片以进行图像分析 我在GitHub存储库中找到了一个全面的方法 如何在终端中执行它 但是 我需要将脚本集成到Python笔记本中 这是脚本 instaloader no vide

随机推荐

  • 趣谈网络协议-应用层(P2P协议)

    一 FTP 1 概述 FTP 文件传输协议 使用两个TCP连接来传输文件 控制连接 客户端主动发起连接 服务端被动打开21端口 改连接将客户端命令传送给服务器 并回传服务器应答 list 获取文件目录 reter 取一个文件 store 存
  • HTTP面试题(二):HTTP请求报文和响应报文格式

    文章目录 HTTP请求报文和响应报文格式 1 请求报文 2 响应报文 3 常见的首部字段 HTTP请求报文和响应报文格式 1 请求报文 请求报文包含四个部分 请求行 包含HTTP版本号 请求方法 URI 请求首部字段 请求内容实体 空行 2
  • JUC快速学习笔记

    JUC快速学习笔记 狂神说JUC 个人学习笔记 介绍 JUC是指javaUtil包中的三个操作线程的包 并发操作 不加锁 方法 属性 方法 private int number 50 买票的方式 public void norSale if
  • 单调栈的及二维单调栈求面积

    单调栈模板 include
  • 线程安全、简单的单例编写

    单例的特性 一 构造方法私有 二 定义SingleInstance 类型属性 一 不安全的单例 public class SingleInstance private static SingleInstanceinstance null p
  • UE5 设置新打开的资产窗口默认停靠在主窗口

    文章目录 前言 方式一 设置工程文件 方式二 设置引擎文件 前言 本文以虚幻引擎5 2 0为例 不同版本的 EditorPerProjectUserSettings ini 文件所在的目录可能不一致 方式一 设置工程文件 编辑器设置 编辑
  • 4到20ma模拟量转换公式_【工控】西门子S7-200学习笔记 第三课 模拟量的使用

    一 S7 200 模拟量使用简介 S7 200系列产品可以采集标准的电压 电流模拟量信号和热电偶 热电阻温度传感器信号 普通的电压和电流信号经过A D转换成为0 32000 或者 32000 32000 之间的整数 温度传感器信号被直接转换
  • 记一次golang cpu 占用100%

    最近重新部署了下测试服务器 发现其负载达到了4 cpu 使用率达到了100 吓的瑟瑟发抖 马上起来查看情况 1 想到了使用go性能查看工具 pprof 因为项目是用gin开发的 所在直接安装了 github com gin contrib
  • 卷积神经网络基础

    一 卷积 本来想自己写一点 发现了很不错的一篇博客 就不班门弄斧了 什么是卷积 知乎 一句话概括 某一时刻 某点的能量 或值 等于多个其他点的叠加 二 卷积神经网络基础 CNN的核心思想 如果简单采用全连接的方式去训练模型 参数量过多难以训
  • 游戏手机连接服务器没有响应时间,雷军:黑鲨游戏手机2响应时间58.9ms,超iPhone...

    IT之家3月18日消息 今天 黑鲨推出新款黑鲨游戏手机2 这款手机起售价为3199元 共有暗影黑和冰封银两种颜色可选 对于这款刚发布的新机型 雷军大赞 操控之王 雷军表示 手起枪响 在高速摄像机镜头下 iPhone响应时间为80ms 黑鲨2
  • 为什么选用 Scala

    为什么选用 Scala 当今的企业和互联网应用程序必须平衡一系列的要点 它们要有快速而可靠的实现 新的功能要能在短时间内通过周期渐进的方式加入 除了简单地提供商务逻辑之外 应用程序必须支持访问安全控制 数据持久化 事务 和其它的进阶功能 程
  • nginx配置websocket反向代理

    设置 nginx增强理解 nginx增加下面的配置 location ver proxy http version 1 1 proxy set header Upgrade http upgrade proxy set header Con
  • APP外包开发第三方登录

    APP开发过程中往往需要对接第三方的登录 国内的有微信 QQ 微博等 国外的有google facebook等账号 对接第三方账号登录SDK可以方便用户快捷登录 是APP登录功能里一项重要的特性 今天和大家分享对接流程和注意事项 希望对大家
  • Git团队协作及分支策略

    目录 分布式版本控制系统 访问模型 分支策略 Git flow 分支策略 Github flow 分支策略 Gitlab flow 主干开发模式 总结 分布式版本控制系统 分布式相比于集中式的最大区别在于开发者可以提交到本地 每个开发者通过
  • 删除链表的中间节点 Java实现_【链表问题】删除单链表的中间节点

    前言 以专题的形式更新刷题贴 欢迎跟我一起学习刷题 相信我 你的坚持 绝对会有意想不到的收获 每道题会提供简单的解答 如果你有更优雅的做法 欢迎提供指点 谢谢 题目描述 给定链表的头节点head 实现删除链表的中间节点的函数 例如 步删除任
  • IDEA中单元测试@Test的设置

    1 打开IDEA File gt Project Structure 2 点到Modules gt Dependencies 点击 3 点击第一个 4 找到你安装IDEA的路径 4 找到这两个jar包 5 点击OK 6 测试
  • vscode使用Ctrl+s保存按Eslint风格自动格式化js/vue/React代码(2020/03/04更新)

    一 使用vscode下载两个插件 1 ESlint 项目中没有装eslint 就不用装这个插件了 2 vetur 另 多余的格式化插件一定要删掉 二 改配置 打开设置如下 覆盖原来的代码 有注释可根据个人喜好修改 不要总是把代码复制过去 看
  • Python----global和nolocal关键字的用法

    原文链接 1 global的作用 global的作用就是将变量声明为全局变量 这个问题在面试中非常常见 经常会有面试官问 如下代码打印结果是啥 var 10 def func var var 20 print inner var print
  • 转帖:Bash实现“多线程”的例子

    以下文章转自 http hi baidu com wwy1640 blog item a74d8c50a272b86384352443 html Bash实现 多线程 的例子 2007 04 25 22 59 bin bash 2006 7
  • Python时间处理

    在这里想做一个初学者的教程 会不断的更新下去 把学到的有关Python时间处理的内容总结起来 初学者笔记最重要的有两点 一个是要简洁 不要长篇大论 把要点讲明白就行 第二个是要符合二八原则 尽量抓住关键的东西 不要过分的追求大而全 优先掌握