单击日历日期后,如何显示准确的事件?

问题描述

我正在尝试获取用户在日历上单击的任何日期的事件。

当您单击某个日期(例如8/15)时,该日期将通过ajax作为字符串(yyyy-mm-dd)发送到服务器,并使用该日期的事件更新页面上的div:

    $.ajax({
       type: "GET",url: "{% url 'update-home' %}",data: {'send_date': send_date},success: function(response) {
            console.log(response)
            $('#events').show().fadeOut(50,function() {
                $('#events').html(response).fadeIn(50);
            });
        },error: function(rs,e) {
              alert('Something went wrong.');
       }
      });

这正常工作。我像这样从服务器提取事件:

def update_home_ajax(request):

the_date = request.GET['send_date']
events = Event.objects.filter(start_time__startswith=the_date).filter(is_private=False).filter(is_deleted=False).exclude(event_type="convention").order_by("-created_date")

从某种意义上说,它可以在用户单击日期拉出所有事件。但是,我的问题是被拉出的事件保存在UTC中。例如,如果EST中的用户单击8/16在01:00(凌晨1点),则会发生错误的查询集,那么实际上该事件实际上是在8/15的21:00返回的,因此无法正确过滤。

我尝试将查询集转换为用户时区,但是当我第一次从数据库中提取事件时,我仍然会错过一些事件。

我在网站上转换为用户的时区没有问题。仅当我尝试根据用户单击的日期更新事件div时,该日期才会发送到服务器以更新事件。

如果我存储为UTC并且每个用户都有指定的时区,如何确保我从数据库中提取准确反映预期日期的事件?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)