【问题标题】:DateTime adjustment when reading TDMS files from Python从 Python 读取 TDMS 文件时的 DateTime 调整
【发布时间】:2021-04-22 20:23:10
【问题描述】:

我有一个 TDMS 文件,其中包含一组带有相关检测数据的 DateTime 值。
我遇到的问题是:

TDMS file              >>>> Python Reads  
4/20/2021  12:00:01 AM >>>> 2021-04-20 04:00:00.597573  
4/20/2021  8:00:01 PM  >>>> 2021-04-21 00:00:00.570708 

由于不准确,这会导致向数据库的传输混乱。

这是我的代码:

dfscaled = tdmsfile.__getitem__("Data (Scaled)").as_dataframe()  
for index, row in dfscaled.iterrows():
     print(row["Timestamp"])

我正在使用 NPTDMS 库。有关如何解决此问题的任何想法?

【问题讨论】:

  • @itprorh66 不幸的是没有。我不认为这是我提取数据的方式的问题。似乎是图书馆如何阅读它的问题。可能需要寻找解决方法。
  • TDMS 文件数据/时间字段在 python 中是什么样子的?
  • @itprorh66 我已经在问题中展示了。浏览一下这些问题,我认为它正在将其转换为 python 中的 UTC 时间,所以如果我将其转换为 EST 而不是 24 小时格式,那可能会起作用

标签: python-3.x python-datetime


【解决方案1】:

所以我最终联系了作者,他很有帮助,可以回复:

TDMS 文件在内部以 UTC 格式存储时间。你不说你怎么样 获取“TDMS 文件”列中的值,但我认为这是来自 将时间转换为您的本地时区以显示的程序 他们。有一个如何从 TDMS 文件转换 UTC 时间的示例 在documentation 中进入您的本地时区。

如果您将这些时间存储在数据库中,我强烈建议您 建议您将时间存储为 UTC 而不是您的本地时区 由于夏令时变化和 UTC,当地时间可能不明确 在世界任何地方都很容易理解,而无需知道 数据来源的本地时区。

如果您仍然想从 UTC 更改为 EST,那么应该这样做:

fmt = "%Y-%m-%d %H:%M:%S.%f"
x=pd.to_datetime(row["Timestamp"]).tz_localize('UTC').tz_convert('US/Eastern').strftime(fmt)
dtm=pd.to_datetime(x[:-3])
print(dtm)

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多