python3 日期datetime、时间戳timestamp、时间字符串date_string之间的转换

写在前面

对于这三者的转换,python2和python3是不同的,因为在python3中新增一些实例方法,能够很方便的实现这些类型之间的转换。

如果需要python2的类型转换请移步这些文章:
python——时间与时间戳之间的转换
Python字符串、时间戳、datetime时间相关转换

简单介绍下,datetime和time中常用的方法

  • datetime.datetime.strptime(string, format)。类方法,作用是根据指定的format(格式),将字符串转换成datetime.datetime实例对象。
  • datetime.datetime.strftime(format): 实例方法,作用就是根据指定的format(格式),将datetime.datetime实例对象转换成时间字符串。
  • datetime.datetime.timestamp(): 实例方法,作用就是将datetime.datetime实例对象转换成时间戳。
  • datetime.fromtimestamp(timestamp, tz=None):类方法,作用是将时间戳转换成datetime.datetime对象。
  • time.strptime(string, format)。类方法,作用是根据指定的format(格式)将时间字符串转换成time.struct_time对象。
  • time.strftime(format, string)。类方法,作用是根据指定的format(格式,)将time.struct_time对象转换成时间字符串。
  • time.localtime(timestamp)。类方法,作用是将时间戳转换成本地时间的time.struct_time对象。若要转换成UTC的time.struct_time对象则使用time.gtime()。
  • time.mktime(t)。类方法,time.localtime()的逆函数,因为作用正好相反。其作用是将time.struct_time对象转换成时间戳。

datetime转timestamp

直接使用datetime模块中datetime类的timestamp()实例方法。

import datetime
import time

dt = datetime.datetime.now()
ts = dt.timestamp()
print(dt) # datetime.datetime(2019, 9, 11, 11, 20, 6, 681320)
print(ts) # 1568172006.68132

datetime转时间字符串

直接使用datetime模块中的datetime类的strftime()实例方法即可。

import datetime
import time

dt = datetime.datetime.now()
format = '%Y-%m-%d %H:%M:%S' # 根据此格式来解析datetime.datetime()对象为时间字符串

print(dt) # datetime.datetime(2019, 9, 11, 11, 20, 6, 681320)
print(dt.strftime(format)) # '2019-09-11 11:20:06'

timestamp转datetime

import datetime
import time

ts = 1568172006.68132 # 时间戳
dt = datetime.datetime.fromtimestamp(ts)

print(dt) # datetime.datetime(2019, 9, 11, 11, 20, 6, 681320)

timestamp转时间字符串

  1. 转换必须通过time.struct_time对象作为桥梁。
  2. 先转成datetime.datetime对象,再转成时间字符串。

time.struct_time对象
时间字符串
时间戳

import datetime
import time
# 方法1
ts = 1568172006.68132 # 时间戳
format = '%Y-%m-%d %H:%M:%S' # 根据此格式来时间戳解析为时间字符串
# 时间戳转time.struct_time
ts_struct = time.localtime(ts)
# time.struct_time转时间字符串
date_string = time.strftime(format, ts_struct)

print(date_string) # '2019-09-11 11:20:06'

# 方法2
dt = datetime.datetime.fromtimestamp(ts)
date_string = dt.strftime(format)

时间字符串转datetime

只需要使用datetime模块中的datetime类的strptime(date_string, format)类方法即可。
这个方法的作用就是:根据指定的format格式将时间字符串date_string,转换成datetime.datetime()对象。

import datetime
import time

date_string = '2019-09-11 11:20:06'
format = '%Y-%m-%d %H:%M:%S' # 根据此格式来解析时间字符串为datetime.datetime()对象

dt = datetime.strptime(date_string, format)

print(dt) # datetime.datetime(2019, 9, 11, 11, 20, 6)

时间字符串转timestamp

  1. 转换必须通过time.struct_time对象作为桥梁。
  2. 先转成datetime.datetime对象,再转成timestamp。

时间字符串
time.struct_time对象
时间戳

import datetime
import time

# 方法1
date_string = '2019-09-11 11:20:06'
format = '%Y-%m-%d %H:%M:%S' # 根据此格式来解析时间字符串为time()对象

# 时间字符串转time.struct_time
ts_struct = time.strptime(date_string, format)
# time.struct_time转时间戳
ts = time.mktime(ts_struct)

print(ts) # 1568172006.0

# 方法2
dt = datetime.datetime.strptime(date_string, format)
ts = dt.timestamp()

参考文献

[1] python3官方文档
[2] python——时间与时间戳之间的转换
[3] Python字符串、时间戳、datetime时间相关转换
[4] Python 之 时间字符串、时间戳、时间差、任意时间字符串转换时间对象

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值