我試圖將UTC時間轉換爲燒瓶應用程序中的相應本地時間。我想知道如果我可以檢測用戶的時區並動態設置它。flask:將utc時間轉換爲用戶的當地時間
這是到目前爲止我的代碼,其適合於所有人的US/Pacific
時區唯一的(從this SO question拉datetimefilter
)
from flask import Flask, render_template_string
import datetime
import pytz
app = Flask(__name__)
@app.template_filter('datetimefilter')
def datetimefilter(value, format='%b %d %I:%M %p'):
tz = pytz.timezone('US/Pacific') # timezone you want to convert to from UTC (America/Los_Angeles)
utc = pytz.timezone('UTC')
value = utc.localize(value, is_dst=None).astimezone(pytz.utc)
local_dt = value.astimezone(tz)
return local_dt.strftime(format)
@app.route('/')
def index():
dt = datetime.datetime.utcnow()
return render_template_string(
'''
<h4>UTC --> Local Time</h4>
Datetime right now is:
<p>{{ dt | datetimefilter }} (utc --> local)</p>
''',
dt=dt, now=now)
if __name__ == '__main__':
app.run(debug=True)
我想這不能處理的服務器端,因爲時區將始終被設置到服務器所在的位置?有沒有辦法通過改變datetimefilter
來解決這個問題?