python将excel中自定义的时间格式转换为文本格式保持显示不变,但分丢失了
print(data)dt_time = time.localtime(data)
print(dt_time)
print(type(dt_time))
time_str = time.strftime('%H:%M',dt_time)
print(time_str)
data = time_str
print(data)
结果如下:
0.2923611111111111
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
<class 'time.struct_time'>
08:00
08:00
0.30625
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
<class 'time.struct_time'>
08:00
08:00
0.3215277777777778
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
<class 'time.struct_time'>
08:00
08:00
0.3347222222222222
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
<class 'time.struct_time'>
08:00
08:00
查了一下百度说的是可能丢失秒以下的,但我这个丢失的是分。
在你的代码中,你将Excel中的时间数据视为从1970年1月1日以来的时间戳。这里的问题是,Excel中的时间是以天为单位的小数表示。因此,你需要将这个小数值乘以24小时、3600秒来将其转换为时间戳,然后再使用time.localtime函数。
这里是修改后的代码:
import time
data = [
,
,
,
]
for i in range(len(data)):
print(data)
# 将Excel中的小数时间转换为时间戳(秒)
timestamp = data * 24 * 3600
dt_time = time.localtime(timestamp)
print(dt_time)
print(type(dt_time))
time_str = time.strftime('%H:%M', dt_time)
print(time_str)
data = time_str
print(data)
现在,你应该能够看到正确的分钟数。注意,这种方法可能会丢失秒以下的精度,但对于大多数情况应该是足够的。如果你需要更高的精度,你可以尝试将时间戳保留到毫秒级别。 isdkz 发表于 2023-3-20 20:56
在你的代码中,你将Excel中的时间数据视为从1970年1月1日以来的时间戳。这里的问题是,Excel中的时间是以天 ...
这个分的问题解决了,但是时上差了8个小时,这个怎么解决呀
帅昊昊昊 发表于 2023-3-20 21:01
这个分的问题解决了,但是时上差了8个小时,这个怎么解决呀
这可能是时区问题,可以自己加上 8 小时
import time
data = [
,
,
,
]
for i in range(len(data)):
print(data)
# 将Excel中的小数时间转换为时间戳(秒)
timestamp = data * 24 * 3600 + 8 * 3600 # 这里加上了 8 * 3600 秒,也就是 8 小时
dt_time = time.localtime(timestamp)
print(dt_time)
print(type(dt_time))
time_str = time.strftime('%H:%M', dt_time)
print(time_str)
data = time_str
print(data) isdkz 发表于 2023-3-20 21:18
这可能是时区问题,可以自己加上 8 小时
dt_time = time.localtime(data*24*3600+16*3600)
我一个一个试的,反正我不看天数,所以要+16才行,是不是等价于-8呀,但是我之前试过-8报错了 帅昊昊昊 发表于 2023-3-20 21:29
dt_time = time.localtime(data*24*3600+16*3600)
我一个一个试的,反正我不看天数,所以要+16才行, ...
天数不看的话确实加16跟 减8没区别,如果看天数的话就得考虑考虑了,是少了 16 个小时,还是多了 8 个小时
页:
[1]