Python和Javascript中的UTC时间缩短了5小时,如何修复?
我有: 我一直被教导UTC时间总是以伦敦的GMT为基础,不管你在世界的哪个地方。我现在在芝加哥地区(-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(
为什么我的价值观相隔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())