Python和Javascript中的UTC时间缩短了5小时,如何修复?

Python和Javascript中的UTC时间缩短了5小时,如何修复?,javascript,python,datetime,Javascript,Python,Datetime,我有: 我一直被教导UTC时间总是以伦敦的GMT为基础,不管你在世界的哪个地方。我现在在芝加哥地区(-5格林威治标准时间),所以这两种方式都没有意义 为什么我的价值观相隔5小时?无论我在世界上的什么地方,我如何才能得到每一个的准确时间?您需要使用Date.UTC()来检索JS中的UTC日期。datetime和new Date()。你在世界的哪个角落并不重要 在Python中: # Python import datetime, time py_utc_now = int(time.mktime(

我有:

我一直被教导UTC时间总是以伦敦的GMT为基础,不管你在世界的哪个地方。我现在在芝加哥地区(-5格林威治标准时间),所以这两种方式都没有意义


为什么我的价值观相隔5小时?无论我在世界上的什么地方,我如何才能得到每一个的准确时间?

您需要使用Date.UTC()来检索JS中的UTC日期。

datetime和
new Date()。你在世界的哪个角落并不重要

在Python中:

# Python
import datetime, time
py_utc_now = int(time.mktime(datetime.datetime.utcnow().timetuple()))    # 1597879534

# Javascript
var js_utc_now = Math.round(new Date().getTime() / 1000);               # 1597861534


py_utc_now - js_utc_now
>>> 18000    # seconds

18000 / 60
>>> 300.0    # minutes
在JS中,我建议您使用名为
dayjs
的第三方库。它非常小,但在处理日期和时间时,它给了您很大的灵活性。 或者可以使用
getUTCDate()
方法

py_utc_now = datetime.now(timezone.utc)

您的Python代码占用的时间已经是UTC,然后将其传递给
mktime
,这将导致。这实际上使时区偏移量加倍,从而导致您看到的错误

要在Python中获得正确的UTC时间戳,可以使用更简单的表达式:

var currTime = new Date();
var js_utc_now = currTime.getUTCDate();

@atomNULL getUTCDate()只返回当月的日期。不是完整的日期。OP需要使用Date.UTC()并传递所有参数(从年到毫秒)以获得日期对象的UTC等效值。将同一年、月、日等参数视为
new Date()
并将其视为UTC,它将返回一个时间值。谢谢!这就是我所期待的。虽然它提出了另一个问题。。。python文档说,这个时代依赖于平台:你知道这是否意味着运行mac或windows的人与基于unix/linux的人的时间不同吗??还是有更好的解决方案让我从JS和Python中获得最佳UTC时间???因为我想要相同的值(忽略滞后)。感谢您的回复,但问题是
currTime.getUTCDate()
根据UTC返回月份的日期,而不是从纪元开始的所有秒数。
int(time.time())