Python时间格式转换

2023-11-02

一、标准库
1、import time
time模块中时间表现的格式主要有三种:
a、timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
b、struct_time时间元组,共有九个元素组。
c、format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

2、import datetime
datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。

二、格式名称
1、时间格式名称:时间戳
示例:1584039884.0
float格式

2、时间格式名称:结构化时间格式,时间元组
示例:time.struct_time(tm_year=2020, tm_mon=3, tm_mday=13, tm_hour=3, tm_min=9, tm_sec=0, tm_wday=4, tm_yday=73, tm_isdst=0)
获取方式:
# time.time() 得到的是float型时间戳 struct_time = time.localtime(time.time()) # 得到结构化时间格式

3、时间格式名称:format_time
示例:2016-10-26 16:48:41
获取方式:
# 生成format_time #struct_time to format_time time.strftime("%Y-%m-%d %X") time.strftime("%Y-%m-%d %X",time.localtime())

4、时间格式名称:datetime格式
示例:2020-03-13 03:02:13.469749
获取方式:
date_time = datetime.datetime.now() print(date_time)

5、ISO 8601标准(字符串)格林治时间格式
type:str
例如:2018-06-20T02:31:00Z
字母T ==> 代表使用UTC时间结尾;
字母Z ==> 4位数字格式的时间偏移量,不写的时候默认不偏移(当前时区),为Z的时候表示0时区:
获取方式:
date_time = datetime.datetime.now().isoformat() print(date_time)

6/UTC(世界协调时间格式)
例如:2020-03-31 16:00:00+00:00 (+时区)
class ‘pandas._libs.tslibs.timestamps.Timestamp’

二、格式转换
1、datetime格式转换成时间戳
ans_time = time.mktime(date_time.timetuple()) print(ans_time)

2、时间戳转年月日时间样式的字符串
# time.time() 得到的是float型时间戳 struct_time = time.localtime(time.time()) # 得到结构化时间格式 now_time = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)

3、时间戳(float)转ISO 标准(字符串)格林治时间格式
timestamp是float类型(如:1627536136.0122457),小数点前10位表示秒,小数点后三位毫秒,后4-6位纳秒
如果float数据超过10位,如13位,要除1000
如果是16位,除以6
如果要保留毫秒,丢弃纳秒(2021-07-29T15:18:06.866)timestamp保留小数点后3位即可
round(timestamp/1000000,3)

dt_time = datetime.datetime.fromtimestamp(timestamp)	# 转为datetime格式	'2021-07-29T14:04:41.037000'
# dt_time = datetime.datetime.fromtimestamp(timestamp).replace(microsecond=0)	# 去掉微秒'2021-07-29T14:03:46'
# dt_time = datetime.datetime.fromtimestamp(timestamp).replace(tzinfo=datetime.timezone.utc)	# 提供时区信息 '2021-07-29T14:05:40.526000+00:00'
iso_time = datetime.datetime.isoformat(dt_time)				# 转为iso格式 type:str  2021-07-29T15:18:06.866223
iso_time = datetime.datetime.isoformat(dt_time)[:-3] + 'Z'  # 转为iso,带Z,按字符串操作  2021-07-29T15:18:06.866Z

3、iso转换为时间戳

st = datetime.datetime.sprptime(isotime,'%Y-%m-%dT%H:%M:%S%z')
timestamp = int(time.mktime(st.timetuple()))

3、时间戳转字符串
struct_time = time.localtime(time.time()) # 得到结构化时间格式
now_time = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)

4、datetime转字符串

import datetime as dt
date_time = datetime.datetime.now().timetuple()
time_str = datetime.strftime(data_time,'%Y%m%d%H%M%S')
# 方法2,批量转换
df['datetime'] = df['Day'].dt.strftime("%Y-%m-%d")	# 好像要用dt,直接用datetime不行

说明:strftime只能转换struct_time格式,datetime格式用timetuple()返回日期对应的time.struct_time对象;否则出现TypeError: Tuple or struct_time argument required

strftime:str from time

5、字符串转struct_time
time_rel = datetime.strptime(time_str,’%Y-%m-%d %H:%M:%S’)
strptime:str
strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。

6、datetime格式转ISO 8601格式
目标格式为‘2018-06-20T02:31:00Z’的字符串
date_time = datetime.datetime.now() date_time_iso = datetime.strftime(date_time, '%Y-%m-%dT%H:%M:%SZ') print(date_time_iso)

8、时间格式由 2020-06-05 00:00:00 转为 2020-06-05T00:00:00Z(字符串格式转字符串格式)

start_time = '2020-06-05 00:00:00'
start_time_datetime = pd.to_datetime(start_time)
date_time_iso = datetime.strftime(start_time_datetime, '%Y-%m-%dT%H:%M:%SZ')
# 方法2,批量处理
df3.index = df3.index.map(lambda x: dt.datetime.strftime(x, '%Y-%m-%dT%H:%M:%SZ'))

10、2020-06-24T02:50:00.165Z字符串转成2020-06-24 02:50:00

df['time'] = pd.to_datetime(df['time']).dt.strftime("%Y-%m-%d %H:%M:%S")

三、series格式时间转换
3.1dataframe整列时间转换
df[‘time’] = pd.to_datetime(df[‘time’])
实际获得格式class ‘pandas._libs.tslibs.timestamps.Timestamp’

3.2格式特殊,按格式转换
df[‘time’] = pd.to_datetime(df[‘time’], format=’%Y-%m-%dT%H:%M:%S.000Z’)

3.3 整列时间戳转

df['Time'] = pd.to_datetime(df['Time']/1000, unit='s')
# unit='s', 'ms','D'

转换前series里是float,注意长度和unit要匹配,不匹配/1000或*1000看看
转换后<class ‘pandas._libs.tslibs.timestamps.Timestamp’>

四、特殊时间获取
当天零点时间:
now_time = datetime.datetime.now()
date_time = now_time - datetime.timedelta(hours=now_time .hour, minutes=now_time .minute, seconds=now_time.second, microseconds=now_time.microsecond)

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

Python时间格式转换 的相关文章

随机推荐

  • Visual Studio 2017 集成Crystal Report为ASP.NET MVC呈现报表

    最近项目需要实现报表功能 平衡各方面的因素 还是使用Crystal Report 水晶报表 下载较新版本 http downloads businessobjects com akdlm cr4vs2010 CRforVS 13 0 21
  • GetBytes的长度区别

    C 的GetBytes的长度区别 string s 欧 耶 string ss abc defg Encoding Default 是指当前系统设置的 默认字符集编码方式 Encoding ASCII 将 Unicode 字符编码为单个 7
  • Android动态化UI框架一、Virtualview-Android

    Android动态化UI框架一 Virtualview Android GitHub alibaba Virtualview Android 简介 A light way to build UI in custom XML Virtualv
  • 华为OD机试真题-机房布局/栈解法【2023.Q1】

    小明正在规划一个大型数据中心机房 需要满足的条件是 确保在每个机柜边上至少要有一个电箱 已知 机房排成1排 我们用M表示机柜 I表示间隔 请你返回这整排机房 至少需要多少个电箱 如果无解请返回 1 输入描述 第一行输入一个字符串 由 M 和
  • 人与计算机通信,需要达到哪些要求?

    目前人们使用计算机时 大多是用计算机的高级语言 如C Java等语言 编制程序来告诉计算 做什么 以及 怎么做 的 这对计算机的利用带来了诸多不便 严重阻碍了计算机应用的进一步推广 如果能让计算机 听懂 看懂 人类语言 如汉语 英语等 那将
  • 深度对抗学习在图像分割和超分辨率中的应用

    原文 http blog csdn net shenziheng1 article details 72821001 深度对抗学习在图像分割和超分辨率中的应用 原创 2017年05月31日 16 43 15 1982 1 前言 深度学习已经
  • Flutter 屏幕适配

    志当存高远 诸葛亮 屏幕尺寸大全 菜单栏共有5个选项 包括手机 平板 手表 电脑 显示器 分别显示屏幕尺寸 PPI 纵横比 dp和px 单位下的宽 高 以及DPI 官方设计规范 适配原理 屏幕尺寸 严格来说 屏幕尺寸实际被物理尺寸和显示分辨
  • sqlserver 如何备份或恢复一个表_MS SQL Server

    如果只想备份或恢复单个表而不想备份或恢复整个数据库的话 往往有以下方法 1 在Sql server2000 中可以使用DTS来将该表的数据导出成另外的文件格式 当需要恢复时 可以将该文件中数据再通过DTS导入 或者建立DTS脚本来完成 2
  • C语言操作寄存器的方法总结

    1 C语言位操作操作寄存器 操作位有两种方法 一种是位字段 另一种是使用按位运算符 下表为几种位操作符及其含义 不改变其他位的值的状况下 对某几个位进行设值 在嵌入式编程中 常常需要对一些寄存器进行配置 有的情况下需要改变一个字节中的某一位
  • 12步让Windows变成Linux

    趣味教程 12步让Windows变成Linux 作者 ZNXF 编辑 ZNXF 2005 11 26 16 21 00 在pocketpcthoughts网站我们发现了一个趣味Flash教程 声称能够12步让Windows变成Linux 可
  • C++的关键字

    关键字也称保留字 是预先定义好的标识符 有其特殊的含义 auto break case char const continue default do double else enum extern float for goto if int
  • myisam和innodb索引实现的不同

    转载 http www 2cto com database 201211 172380 html myisam和innodb索引实现的不同 MyISAM引擎使用B Tree作为索引结构 叶节点的data域存放的是数据记录的地址 下图是MyI
  • ❤️测试新人如何编写测试用例?一文从3个方面带你写一个合格的测试用例❤️

    前言 作为一个测试新人 刚开始接触测试 对于怎么写测试用例很头疼 无法接触需求 只能根据站在用户的角度去做测试 但是这样情况会导致不能全方位的测试APP 这种情况就需要一份测试用例了 但是不会写 求指教 还有就是测试出来的bug该如何追踪
  • 【笔记】公钥密码学之RSA

    数论基础 素数 1 定义 一个大于1的自然数 除了1和它本身外 不能被其他自然数整除 除0以外 的数称之为素数 质数 否则称为合数 如 3 4 12 不是素数 11除了等于11 1以外 不能表示为其它任何两个整数的乘积 所以11是一个素数
  • 目标检测之数据预处理

    一 数据介绍 AI识虫数据集结构如下 提供了2183张图片 其中训练集1693张 验证集245 测试集245张 包含7种昆虫 分别是Boerner Leconte Linnaeus acuminatus armandi coleoptera
  • Apache下设置整站变灰方法

    本文转载自http www sapub net Apache 感谢作者分享 Web服务器下设置变灰的方法比较简单 总结如下 1 安装mod ext filter模块 此模块用来在所有的输出页面插入你想要的内容 比如css 广告头之类 这里假
  • centos7设置静态IP地址

    有时候我们电脑 老是换网线 这个时候虚拟机ip就会跟着变 所以这里我建议大家直接配置静态ip 这样可以避免ip变化 目录 1 查看IP配置信息 从中获取网卡名称 2 编辑网卡名称对应的配置文件 3 修改 etc sysconfig netw
  • QT父窗口和子窗口互相通信

    这个问题上网查了好多 大神们都说的很简单 对于我这样的小白来说 理解起来就有点吃力了 下面记录一下 给自己留给笔记 也是给正在摸索中的小白们一点参考 一 大家要明白如何建立子窗口 1 利用新建ui的方式来新建 我没有用这种方式 这里就先不说
  • php 命令执行中 PHPSESSID 妙用

    php 命令执行中 PHPSESSID 妙用 前言 题目地址 查看源码 使用PHPSESSID绕过限制 使用反引号绕过限制 前言 之前刷CTF的时候 遇到一个命令执行的题 看大佬的WP是通过PHPSESSID传值 绕过waf 最近有时间复现
  • Python时间格式转换

    一 标准库 1 import time time模块中时间表现的格式主要有三种 a timestamp时间戳 时间戳表示的是从1970年1月1日00 00 00开始按秒计算的偏移量 b struct time时间元组 共有九个元素组 c f