问题描述
我们有一个网络应用程序(基于 Django 的后端和基于Node / ReactJs的前端, MysqL 基于 DB )和基于Flutter的移动应用。我们正在创建一个系统,供供应商创建会议邀请并列出会议开始的时间(和时区)。 该会议的访问者应该可以在当地时间看到时间(和时区)。
我们将根据访问者的IP获取访问者的位置和时区ID。
我无法弄清楚如何显示前端的时区列表(最好采用GMT + xxxx格式) ,供卖方选择何时他创建了邀请,并以应以哪种格式将其发送到后端并存储,以便我可以将其转换并根据访问者所在的时区显示给访问用户 >?
如果在座的有人可以向我指出正确的问题,或者我可以从中参考一些实施文件,我将不胜感激?
解决方法
您可以使用pytz创建时区列表。
Django中有文档说明如何选择当前时区并创建时区列表link
创建时区选择选项列表
# views.py
import pytz
def your_views(request):
# code
return render(request,'your_template.html',{'timezones': pytz.common_timezones})
在your_template.html文件中
<select name="timezone">
{% for tz in timezones %}
<option value="{{ tz }}">{{ tz }}</option>
{% endfor %}
</select>
,
普通人不喜欢GMT + X。其次,基于IP的时区对使用VPN的人来说很烦人,尤其是因为浏览器基于计算机设置存储时区。当然,它需要通过javascript发送请求,因此首页不会知道时区。参见Intl.DateTimeFormat.resolvedOptions().timeZone。
要生成与该列表相对应的选项,请使用pytz.common_timezones
:
import pytz
class YourModel(models.Model):
TZ_CHOICES = ((v,v) for v in pytz.common_timezones)
time_zone = models.CharField(choices=TZ_CHOICES)