(新手...,正在使用Jupyter Notebook)
我从仪器中获得了一些数据,其中日期和时间来自7个独立的变量(SerYear,SerMon,SerDay,SerHour,SerMin,SerSec,SerHund,所有整数)。 “系列”的“ Ser”,Hund是百分之一秒
我使用以下代码“汇编”日期时间(年,月和日为常数,没有SerHund,np = numpy)。它可以工作(可以用更好的方法吗?)
time_adcp=[]
for i in range(len(SerHour)):
c_time = datetime.datetime(Year,Month,Day,SerHour[i],SerMin[i],SerSec[i])
time_adcp = np.append(time_adcp,c_time)
仅将SerHund作为下一个变量,它被理解为“微秒”。 SerHund的第一个值为61,所以得出的结果是
time_adcp=[]
for i in range(len(SerHour)):
c_time = datetime.datetime(Year,Month,Day,SerHour[i],SerMin[i],SerSec[i],SerHund[i])
time_adcp = np.append(time_adcp,c_time)
print(SerSec[0],SerHund[0],time_adcp[0]) # to check out...`
[29] [61] 2019-02-06 09:35:29.000061
所以...我想,如果将SerHund乘以10,000,我会得到正确的值(29.61秒),但是,我得到的是
[29] [61] 2019-02-06 09:35:29.020176
我的第一个问题是:如何在日期时间中加上百分之一秒?
和第二个:为什么乘以10e4无效?
谢谢
答案 0 :(得分:0)
10e4
太多了……还有float
:
print(1e4) # 10000.0
print(10e4) # 100000.0
如果您使用*10000
(或int( ... *1e4)
(以规避1e4
为float
),则您的代码有效:
Year,Month,Day,SerHour,SerMin,SerSec,SerHund=2019,2,6,9,35,29,61
import datetime
dt = datetime.datetime(Year,Month,Day,SerHour,SerMin,SerSec,SerHund)
print(dt)
dt = datetime.datetime(Year,Month,Day,SerHour,SerMin,SerSec,SerHund*10000)
print(dt)
输出:
2019-02-06 09:35:29.000061
2019-02-06 09:35:29.610000
1e4
可以使用int(...)
:
dt = datetime.datetime(Year,Month,Day,SerHour,SerMin,SerSec,int(SerHund*1e4))
print(dt)
输出:
2019-02-06 09:35:29.610000
答案 1 :(得分:0)
这为您提供了一秒钟的时间。
import datetime
from time import strftime
n = datetime.datetime.now()
m = float(n.strftime("%S.%f"))
o = int(m)
p= m-o
q=round(p*100)/100
print(n,q)
这为您提供了如何添加部分-最简单的方法:
from datetime import timedelta
d = timedelta(microseconds=10) #(1000ms = 1 sec => 1/100th sec = 10ms)
d2 = n + d
print(d2)
答案 2 :(得分:0)
这不是答案,而是针对我的问题的解决方案。必须对包含“百分之一秒”的变量使用int()
,否则,将给我错误的结果。
time_adcp=[]
for i in range(len(SerHour)):
c_time = datetime.datetime(Year[i],Month[i],Day[i],Hour[i],Min[i],Sec[i],int(Hund[i])*10000)
time_adcp = np.append(time_adcp,c_time)
但是,我不明白为什么我不需要对来自同一文件的其他变量使用int()
。而且,更重要的是,那是什么错误的结果?
从一开始:
1)我加载了一个结构'.mat'文件,该文件最初是由Matlab以外的其他公司导出的。我用
import scipy.io as sio
d_adcp = sio.loadmat('file_adcp.mat')
我从d_adcp
分离了日期和时间变量
Year = d_adcp['SerYear']
Month = d_adcp['SerMon']
Day = d_adcp['SerDay']
Hour = d_adcp['SerHour']
Min = d_adcp['SerMin']
Sec = d_adcp['SerSec']
Hund = d_adcp['SerHund']
现在,这些是什么样的变量?它们看起来像整数
print(Year[0],Month[0],Day[0],Hour[0],Min[0],Sec[0],Hund[0])
[19] [2] [6] [9] [35] [29] [61]
验证,它们不是整数
isinstance(Year,int)
False
都不浮动!?
isinstance(Year,float)
False
据我所知,datetime
仅接受整数。那么,为什么起初它会起作用,甚至给我错误的结果呢?为何我只需要为int()
使用Hund
我将非常感谢您提供一些帮助,以了解发生了什么...谢谢。