如何显示时区列表,供供应商在列出活动时可供选择,其他访问者可以查看当地时间?

问题描述

我们有一个网络应用程序(基于 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)