如何解决FullCalendar错误日期上的某些事件并非全部
我正在FullCalendar上列出日期,如您在图像中看到的那样,某些日期显示正确,而有些则没有。我找不到任何理由是这种情况。错误事件唯一的共同点是它们的开始时间为晚上8点或更晚。
我选择了8月17日,它有两个活动。日历上只有一个正确显示。
显示的两个事件的事件数据:
[2020-08-21 13:12:32,250] [INFO] [views : log_report] 20776 : 140579017103168 : {'_state': <django.db.models.base.ModelState object at 0x7fdb0e8f5518>,'id': 140,'created_date': datetime.datetime(2020,8,12,19,59,42,969082,tzinfo=<UTC>),'modified_date': datetime.datetime(2020,17,2,33,1,101542,'author_id': 324,'session': '','event_type': 'lfp_event_paid','recipient_id': None,'parent_hub_id': '3f42ec9e-8f42-4d0a-94ca-c4a6e98b01d6','event_title': 'Rise of the Runelords,a Pathfinder Adventure Path','unique_id': UUID('27268185-f906-49b0-b760-704bc2f9e3ef'),'start_time': datetime.datetime(2020,15,'end_time': datetime.datetime(2020,3,'budget_amount': 10,'budget_details': 'No Budget Details','min_players': 2,'max_players': 5,'lfg_state': 'LFP','game_played_id': 27,'other_game': '','session_type': 'One-Shot','location': 'Roll20 and Discord','location_link': 'https://app.roll20.net/campaigns/details/7386210/rise-of-the-runelords-anniversary-edition','req_status': 'inactive','paid_success': False,'is_recurring': False,'is_closed': False,'is_full': False,'is_private': False,'is_paid': False,'is_deleted': False}
[2020-08-21 13:12:32,249] [INFO] [views : log_report] 20776 : 140579017103168 : {'_state': <django.db.models.base.ModelState object at 0x7fdb0e8f5358>,'id': 145,14,51,543054,23,389649,'event_type': 'lfp_event_free','parent_hub_id': 'a038e240-6a86-47b3-aa6c-5409edbb4362','event_title': 'Monday Night Age of Worms','unique_id': UUID('c4edb4c8-6fcd-4bb7-9c17-2be96c15f0bf'),18,'budget_amount': 0,'min_players': 3,'max_players': 4,'game_played_id': 1,'location': 'Foundry','location_link': 'http://71.179.132.53:30000','is_deleted': False}
这是我的活动代码:
document.addEventListener('DOMContentLoaded',function() {
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl,{
height: 560,plugins: [ 'interaction','dayGrid','timeGrid' ],defaultView: 'dayGridMonth',defaultDate: '{% now "Y-m-d" %}',eventRender: function(info) {
$(info.el).tooltip({
title: info.event.title,placement: "bottom",trigger: "hover",container: "body"
});
},header: {
left: 'title',center: '',right: 'prev,next'
},events: [
{% for event in connected_events %}
{
title: "{{event.event_title}}",start: "{{event.start_time|date:'c'}}",end: "{{event.end_time|date:'c'}}",url: "{% url 'events:event-detail' event.unique_id %}",details: "test",{%if event.budget_amount > 0 and event.lfg_state == 'LFGM' %}color : "#ff8f07"{%elif event.budget_amount <= 0 and event.lfg_state == 'LFGM' %}color : "#d943c5"{%elif event.budget_amount > 0 and event.lfg_state == 'LFP'%}color : "#1ad914"{%else%}color:"#38b3ff"{%endif%},},{% endfor %}
],});
calendar.render();
});
解决方法
重要的是要意识到,UTC中的2020-08-17 00:15
在EST / EDT中是2020-08-16 20:15
-因为EST比UTC落后4小时-所以实际上是前一天的8:15 pm 。请参见https://savvytime.com/converter/utc-to-est/12-15am轻松地在时区之间进行转换。
这就是Rise of the Runelords
在FullCalendar中显示在16号的原因。因此,日历正确,右侧的卡有误。 (而且您对晚上8点以后发生的事件的观察是完全正确的-但现在您知道原因了!)
问题中未显示相关代码,但您提到在调查后发现,显示卡中显示的日期是作为字符串加载的,而没有进行时区转换(而时间已正确转换,整个datetime对象传递给了fullCalendar),那么一旦您将其排序,该日期就会正确显示在卡中。还需要对代码(同样不可见)应用类似的修复程序,该代码决定在日历中单击日期时要显示哪些卡。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。