【发布时间】:2013-01-13 19:30:15
【问题描述】:
我正在尝试确定(因为我的应用程序正在处理来自不同来源和不同时区、格式等的大量数据)如何最好地存储和使用我的数据。
例如,我应该将所有内容都存储为 UTC 吗?这意味着当我获取数据时,我需要确定它当前所在的时区,如果它不是 UTC,则进行必要的转换以使其如此。 (注意,我在 EST)。
然后,在对数据执行计算时,我是否应该提取(比如说它是 UTC)并进入我的时区 (EST),所以当我查看它时是否有意义?我应该将其保留为 UTC 并进行所有计算吗?
这些数据中有很多是时间序列的,并且会被绘制成图表,并且图表会在 EST 中。
这是一个 Python 项目,所以假设我有一个数据结构:
"id1": {
"interval": 60, <-- seconds, subDict['interval']
"last": "2013-01-29 02:11:11.151996+00:00" <-- UTC, subDict['last']
},
我需要对此进行操作,通过确定当前时间 (now()) 是否 > 最后一个 + 间隔(已经过去 60 秒)?所以在代码中:
lastTime = dateutil.parser.parse(subDict['last'])
utcNow = datetime.datetime.utcnow().replace(tzinfo=tz.tzutc())
if lastTime + datetime.timedelta(seconds=subDict['interval']) < utcNow:
print "Time elapsed, do something!"
这有意义吗?我在任何地方都在使用 UTC,无论是存储的还是计算的......
另外,如果有人有关于如何在软件中使用时间戳的优秀文章的链接,我很乐意阅读。可能类似于在应用程序中使用时间戳的 Joel On 软件?
【问题讨论】:
-
抱歉 - 我错过了那里的编辑 - 但是,TZ 因“不正确”而臭名昭著
-
没问题 - 嗯,是的,这是另一个问题......真是个 PITA。其他管理大量时间数据的项目是如何做到这一点的?
-
很多项目都没有:)
-
哈,好吧,我为这个应用程序的第一个 POC 也不是真的……结果调试问题真的很痛苦。而且代码看起来像废话。对于重写,我想正面解决这个问题并尽我所能解决它。
-
AFAIK 你正在尽你所能使用适当的库......
标签: python design-patterns datetime architecture system-design