首页 > 解决方案 > 如何在日期时间中添加百分之一秒?

问题描述

(新人...,正在使用 Jupyter Notebook)

我有一些来自仪器的数据,其中日期和时间来自 7 个单独的变量(SerYear、SerMon、SerDay、SerHour、SerMin、SerSec、SerHund、所有整数)。'Series' 的 '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 不起作用?

谢谢

标签: pythonpython-3.xdatetime

解决方案


这不是答案,而是我的问题的解决方案。必须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

我非常感谢一些帮助以了解正在发生的事情......谢谢。


推荐阅读