我正从传感器收集一些数据,我从中得到时间戳:
"time": {
"seconds": 40,
"year": 115,
"month": 5,
"hours": 7,
"time": 1434549820776,
"date": 17,
"minutes": 3,
"day": 3,
"timezoneOffset": 420
},
我有一个python脚本来处理来自传感器的数据(传入数据是json格式),我取值time
并转换为可读时间格式。
我使用datetime.fromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S')
并返回'2015-06-17 15:03:40'
datetime.utcfromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S')
的位置
退回:'2015-06-17 14:03:40'
尽可能有一小时差异,所以我的问题是哪一个更好用?
答案 0 :(得分:5)
看着你的json,你可以看到时间戳对应于2015-06-17 07:03:40。
timezoneOffset告诉您本地时间与UTC时间之间有7小时的差异=>对应于你的json的UTC时间是2015-06-17 14:03:40。
由于这是您使用datetime.utcfromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S')
(=>' 2015-06-17 14:03:40')时获得的,这意味着您的时间戳以UTC时间写入因此,如果你想要准确的话,你应该使用utcfromtimestamp
。
答案 1 :(得分:5)
两者都是正确的,只是他们没有给你同样的时间。两者都假设时间戳是EPOCH的毫秒数(通常是1/01/1970 00:00 UTC)和:
fromtimestamp
以当地时间为您提供日期和时间utcfromtimestamp
为您提供UTC的日期和时间。因为我不知道你住在哪里(英国?)我不能多说,在西班牙,法国,比利时和丹麦,当地时间冬天是UTC + 1,夏天是UTC + 2。
您必须知道您是否需要UTC时间或当地时间。
答案 2 :(得分:0)
基本上你想用什么有效。理想情况下,您的文档将包含传感器报告时间的时区。可能它在同一时区,因为设置传感器的人首先设置时间,因为它不太可能的传感器包含时区感知。
如果您可以自由决定传感器的设置时间,我通常建议使用UTC,因为这样可以避免夏令时等各种麻烦。此外,它在国际团队中运作良好。
如果您无法确定程序运行的PC的时区设置以及传感器是否匹配,那么即使datetime.fromtimestamp(1434549820776/1000, timezone)
也是正确答案。