如何解决Python和Javascript中的UTC时间关闭了5个小时,如何解决?
我有:
# 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
我总是被告知,无论您身在世界的哪个地方,UTC时间总是基于伦敦的格林尼治标准时间。而且我目前在芝加哥地区(格林尼治标准时间-5),所以这也没有道理方式。
为什么我的价值观相隔5个小时?不管我在世界上什么地方,我如何获得每个人的确切时间?
解决方法
您的Python代码花费的时间已经是 UTC,然后将其传递给expects local time values的import numpy as np
import pandas as pd
file="https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/coursera/Topic_Survey_Assignment.csv"
df=pd.read_csv(file,index_col=0)
df.sort_values(by=['Very interested'],axis=0,ascending=False,inplace=True)
df['Very interested']=df['Very interested']/2233
df['Somewhat interested']=df['Somewhat interested']/2233
df['Not interested']=df['Not interested']/2233
df
df_chart=df.round(2)
df_chart
labels=['Data Analysis/Statistics','Machine Learning','Data Visualization','Big Data (Spark/Hadoop)','Deep Learning','Data Journalism']
very_interested=df_chart['Very interested']
somewhat_interested=df_chart['Somewhat interested']
not_interested=df_chart['Not interested']
x=np.arange(len(labels))
w=0.8
fig,ax=plt.subplots(figsize=(20,8))
rects1=ax.bar(x-w,very_interested,w,label='Very interested',color='#5cb85c')
rects2=ax.bar(x,somewhat_interested,label='Somewhat interested',color='#5bc0de')
rects3=ax.bar(x+w,not_interested,label='Not interested',color='#d9534f')
ax.set_ylabel('Percentage',fontsize=14)
ax.set_title("The percentage of the respondents' interest in the different data science Area",fontsize=16)
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend(fontsize=14)
def autolabel(rects):
"""Attach a text label above each bar in *rects*,displaying its height."""
for rect in rects:
height = rect.get_height()
ax.annotate('{}'.format(height),xy=(rect.get_x() + rect.get_width() / 3,height),xytext=(0,3),# 3 points vertical offset
textcoords="offset points",ha='center',va='bottom')
autolabel(rects1)
autolabel(rects2)
autolabel(rects3)
fig.tight_layout()
plt.show()
。这实际上会使时区偏移量加倍,从而导致您看到错误。
要在Python中获得正确的UTC时间戳,您可以使用更简单的表达式:
mktime
,
您需要使用Date.UTC()来检索JS中的UTC日期。
, datetime
和new Date()
都从运行它们的计算机的设置中得出它们的值。不管你在世界上什么地方。
在Python中:
py_utc_now = datetime.now(timezone.utc)
在JS中,建议您使用名为dayjs
的第三方库。它虽然很小,但在处理日期和时间时给您很大的灵活性。
或者,您可以使用getUTCDate()
方法。
var currTime = new Date();
var js_utc_now = currTime.getUTCDate();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。