Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python datetime.fromtimestamp与datetime.utcfromtimestamp,哪个更安全?_Python_Python Datetime - Fatal编程技术网

Python datetime.fromtimestamp与datetime.utcfromtimestamp,哪个更安全?

Python datetime.fromtimestamp与datetime.utcfromtimestamp,哪个更安全?,python,python-datetime,Python,Python Datetime,我正在从传感器收集一些数据,并从中获得时间戳,如下所示: "time": { "seconds": 40, "year": 115, "month": 5, "hours": 7, "time": 1434549820776, "date": 17, "minutes": 3, "day

我正在从传感器收集一些数据,并从中获得时间戳,如下所示:

   "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'


正如你所能看到的,有一个小时的差异,所以我的问题是哪一个更好使用?

基本上,你想使用有效的。理想情况下,您的文档将包含传感器报告时间的时区。它可能与安装传感器的人首先设置时间的时区相同,因为传感器不太可能包含时区感知

如果您可以自由决定传感器中设置的时间,我通常建议使用UTC,因为这将避免您在夏令时等方面遇到的各种麻烦。此外,它在国际团队中运行良好


甚至可能是
datetime。如果您不能确定程序运行的PC的时区设置和传感器是否匹配,则fromtimestamp(1434549820776/1000,时区)
是正确的答案。

查看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/01/1970 00:00 UTC),并且:

  • fromtimestamp
    以本地时间为单位提供日期和时间

  • utcfromtimestamp
    以UTC为单位提供日期和时间
因为我不知道你住在哪里(英国?),我不能说更多,在西班牙、法国、比利时和丹麦,当地时间冬天是UTC+1,夏天是UTC+2


你必须知道你是需要UTC时间还是当地时间。

首先,你文章中的输出没有什么不同。。。其次,这取决于你想要什么,你想要当地时区的时间还是协调世界时(UTC)的时间?实际上,这取决于时间戳是用UTC还是本地语言编写的time@JulienSpronck我想他们的意思是,输出与dict中的小时:分钟:秒不匹配,即使在添加
timezoneOffset
后,它还有一个小时。我不认为我们这些互联网上的陌生人有任何方法可以预测那一小时是如何到来的。
utcfromtimestamp
应该总是给出一致的结果,无论你在哪个时区。但是当你运行它时,你会得到
15:03:40
,我会得到
14:03:40
-问题中是否存在某种剪切和粘贴错误?@MarkRansom问题中有一个拼写错误,我已经解决了。有趣的是,我正要指出他们实际上得到
15:03:40
,但当我自己尝试时,我也得到了
14:03:40