python时间格式转换问题,time及datetime库的使用!

在数据处理中经常会遇到 时间格式转换 问题,有时我们拿到的是时间戳(一连串数字),需要把它转化固定的时间格式;又或者给的时间格式不理想,只需要其中中的 年、月、日, 就需要把多余部分给去掉;

python时间格式转换问题,time及datetime库的使用!_第1张图片

1,概念了解

这篇文章主要介绍一下 python 中 时间转换问题( 用到的库:timedatetime ),对于 time 来说,使用到的函数主要有四个:strptime、strftime、localtime、mktime;时间转换方面需要了解三个概念:时间戳、时间数组(对象)、时间格式

时间戳,简单地理解就是有一连续数字可以代表某一刻的时间,例如 1582043910 这一串数字代表的就是 2020/2/19 0:38:30

一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间

——来源于百度百科

时间数组:是具有结构层次上的时间,数据类型为元组,并不是一个时间字符串;结构如下:

time.struct_time(tm_year=2018, tm_mon=5, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=122, tm_isdst=-1)

时间格式:类似于**“2020/01/03 02:20:00” 、“2020-01-03 02:10:00”**这样的,是一个字符串。

总的来说,时间类型之间的转换机制如下:

python时间格式转换问题,time及datetime库的使用!_第2张图片

**时间格式与时间戳之间转换,只能通过时间数组(时间对象)来进行,**这里的时间数组起到了桥梁的作用。

2,strptime、strftime、localtime、mktime 代码实操

2.1,时间戳转化为时间格式(自定义,例如 “2020/01/02 08:00:00”)

利用 time.time() 函数获取当前时间的时间戳,并利用 time.localtime 将时间戳转化为时间数组;

import time
#获取当前时间的时间戳
start = time.time()
print(start)

#时间戳转化为固定时间格式;
#首先,利用time.localtime将时间戳转化为当地时间;
local_time = time.localtime(start)
print(local_time)

Snipaste_2020-02-20_00-14-41.jpg

在用strftime 将时间数组转化为自己定义的时间格式 ,strftime 接受两个参数:第一个为所需要的时间格式,第二个是需要转换的时间数组(第二个参数不接受字符串,只接受 时间元组 或 struct_time格式)

#其次在利用strftime将时间数组转化为时间格式;
#转化为%Y_%m_%d %H:%M:%S
type_time = time.strftime('%Y/%m/%d %H:%M:%S',local_time)
print(type_time)

#输入字符串时
type_time1 = time.strftime('%Y/%m/%d %H:%M:%S','2020/02/20 00:14:10')
print(type_time1)

python时间格式转换问题,time及datetime库的使用!_第3张图片

2.1,自定义时间转化为时间戳

先利用strptime 将合法时间格式转化为时间数组,再用 mktime 函数转化为时间戳;

同样地、strptime只接受时间合法格式(为一个字符串),不接受其他数据类型;

#将时间字符串转化为时间戳
#利用的函数为 time.mktime 和 time.strptime;
type_time1 = '2020-02-03 10:10:00'
#利用time.strptime转化为时间数组;
time_arr = time.strptime(type_time1,'%Y-%m-%d %H:%M:%S')
print(time_arr)


#利用time.mktime将时间数组转化为时间戳;
time_stamp = time.mktime(time_arr)
print(time_stamp)


#将时间戳传入 strptime 函数中;
time_arr1 = time.strptime(time_stamp,'%Y-%m-%d %H:%M:%S')
print(time_arr1)

python时间格式转换问题,time及datetime库的使用!_第4张图片

3,关于 time  和 datetime 交叉应用

python 在时间格式处理方面,除去 time库 之外,还有一个经常用到的库 :datetime,计算时间差时,常会用到 datetime.timedelta 函数 ,两个简单例子的代码实操如下:

3.1,获取10天之前的日期

import time
import datetime

#time和datetime函数相结合,获取10天前的时间
#timedelta获取十天的时间元组
print(datetime.timedelta(days=10))
print('\n')

#用现在时间前去十天,获取十天前的时间元组
tree_time = (datetime.datetime.now()-datetime.timedelta(days = 10))
print('十天前的时间元组为:')
print(tree_time)
print('\n')


#再转化为时间戳;
time_stamp = int(time.mktime(tree_time.timetuple()))
print('10天前的时间戳为:')
print(time_stamp)
print('\n')

#字符串格式转换;
other_style_time = tree_time.strftime('%Y/%m%d %H:%M:%S')
print('10天前的时间为:')
print(other_style_time)
print('\n')

python时间格式转换问题,time及datetime库的使用!_第5张图片

3.1,两个时间点之间相差天数、小时数、秒数

time_1 = '2020-02-01 10:23:25'
# 转化time_1格式问题,利用datetime.datetime.strptime时间数组转换
time1_type = datetime.datetime.strptime(str(time_1),'%Y-%m-%d %H:%M:%S')

time2 = '2020-01-23 08:25:00'
time2_type = datetime.datetime.strptime(str(time2),'%Y-%m-%d %H:%M:%S')


#相减计算天数
print('time_1与time2_type相差天数为:\n')
print((time1_type-time2_type).days)
print('\n')


print('time_1与time2_type相差秒数为:\n')
print((time1_type-time2_type).seconds)
print('\n')



print('time_1与time2_type相差小时数为:\n')
print((time1_type-time2_type).seconds//60)
print('\n')

python时间格式转换问题,time及datetime库的使用!_第6张图片

你可能感兴趣的:(数据处理)