Python中时间类型的互转

时间的3中表示格式,以及之间的互转:

在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:

(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

(2)格式化的时间字符串(Format String): ‘2018-04-18’

(3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

用处:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

首先看下,datetime的使用

import datetime

date = datetime.datetime.now()
print(date)

 输出结果为: datetime.datetime(2018, 10, 11, 11, 47, 6, 549749)

将输入的数字转化为日期(datetime.date)

只需要将想转化为日期的年份、月份和日期放入datetiem.date()的括号中,用逗号分隔。

datetime.date(2018, 10, 11)

输出结果为:datetime.date(2018, 10, 11)。

同样用法的还有datetime.time(),就是将数字转换为时间。

格式化时间

strdate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S)
print(strdate)

输出结果:'2018-10-11 11:49:49'

strdate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
print(strdate)

输出结果:'2018-10-11 11:52'

strdate =  datetime.datetime.now().strftime("%Y%m%d")
print(strdate)

输出结果:'20181011'

多加一天

addday = (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-
%d %H:%M:%S")
print(addday)

输出结果: '2018-10-12 12:57:34'

多加一小时

addhour = (datetime.datetime.now()+datetime.timedelta(hours=1)).strftime("%Y-%m-
%d %H:%M:%S")
print(addhour)

输出结果: '2018-10-11 12:59:59'

多加一分钟:

addhour = (datetime.datetime.now()+datetime.timedelta(minutes=1)).strftime("%Y-%m-
%d %H:%M:%S")
print(addhour)

输出结果:'2018-10-11 12:02:34'

转化

time模块

时间戳-->格式化-->字符串

import time
_now = time.time()       # 时间戳
 
struct_time = time.localtime(_now)  # 时间戳转化成格式化的时间
 
time.strftime("%Y-%m-%d %X", struct_time)    # 2018-04-21 22:44:53

字符串-->格式化-->时间戳

str_time = '2018-04-18 08:00:00'
 
struct_time2 = time.strptime(str_time,'%Y-%m-%d %H:%M:%S')  # 字符串转格式化
 
timestamp = time.mktime(struct_time2)   # 格式化转时间戳

datetime模块

时间戳 --> 格式化--> 字符型

timestamp1 = 1509636585.0   # 2018-04-21 23:47:02.886948
 
# 时间戳转化为格式化(datetime类型)时间
struct_time = datetime.datetime.fromtimestamp(1509636585.0)   # 类型:<class 'datetime.datetime'>
 
# 格式化转化为字符串类型
str_time = datetime.datetime.strftime(struct_time,'%Y-%m-%d %H:%M:%S')   # 2017-11-02 23:29:45

字符型 -->格式化 --> 时间戳

str_time1 = '2017-11-02 23:29:45'
 
# 字符串-->格式化
struct_time = datetime.datetime.strptime(str_time1,'%Y-%m-%d %H:%M:%S')
 
# 格式化-->时间戳
time_stamp = time.mktime(struct_time.timetuple())  # 1509636585.0

时间之间的计算

# 时间之间的间隔
# 1.时间延迟、提前的计算
now =datetime.datetime.now()
 
# 明天这时候
tomorrow_now = now + datetime.timedelta(days=1)
 
# 昨天这时候
yes_now = now + datetime.timedelta(days=-1)
 
# 2.两个时间的差值
days = (tomorrow_now - yes_now).days   # 2

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值