3、python里时间戳、字符串和时间数组的转化
python里面的datetime又称为时间数组
在Python中,通常有这三种方式来表示时间:时间戳、格式化的时间字符串、元组(struct_time)
:
(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
(2)格式化的时间字符串(Format String): ‘1988-03-16’
(3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等
a.时间戳-->struct_time,字符串
a= 1462091932.0000045
time.localtime() #将当前时间转换为struct_time
time.localtime(a) #将a转换为struct_time
time.gmtime(a) #将时间转换为struct_time
time.ctime(a) #将时间戳转换为时间字符串
也可以使用datetime库下的函数进行转换:
d=datetime.datetime.fromtimestamp(a) #将a转换为struct_time
d: datetime.datetime(2016, 5, 1, 16, 38, 52, 5)
b.struct_time-->字符串,时间戳
a = 1462091932.0000045
a = time.localtime(a)
b = time.asctime(a) #转换为字符串
time.strftime("%a %b %d %H:%M:%S %Y",a) #转换为字符串
str1 = a.strftime("%Y-%m-%d %H:%M:%S") #转换为字符串,格式不同
time.mktime(a) #转换为时间戳,结果为秒级,如果想要得到毫秒级的需要乘1000
c.字符串-->struct_time,PS:字符串不能直接转换为时间戳,需要先转为struct_time
b = '2013-10-01 14:05:32'
c = time.strptime(b,'%Y-%m-%d %H:%M:%S') #按照格式转换为9元组,具体符号含义可以查time.strptime函数:
https://www.runoob.com/python/att-time-strptime.html
d.实际演示
a = 1462099131.9999979
b = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(a))
[output] '2016-05-01 18:38:51'
pd.Timestamp(b)
[output] Timestamp('2016-05-01 18:38:51')
4、备忘
其实整理这篇文档的目的是在做策略的时候碰到了这样一个问题:我需要把matlab里面的数据放在python里面测试,时间列需要变成时间索引:
point_synfes=point_synfes.dropna(subset=['time']) #去nan,避免后面time函数报错
point_synfes['time'] = (point_synfes['time'] -719529) *86400 +3600 *8 #matlab时间戳转化为python时间戳
temp_trian = [pd.Timestamp(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(i)))for iin point_synfes['time'].values] #时间列转为需要的格式
point_synfes.index = temp_trian #设置时间列为索引
del point_synfes['time'] #删除原时间列
# 转化过程会有一些改变副本的操作警告,不过我的目的只是测试,所以就没有进一步修改了