【问题标题】:FullCalendar Day Light Savings renders wrong day and timeFullCalendar Day Light Savings 呈现错误的日期和时间
【发布时间】:2017-02-22 09:40:03
【问题描述】:

我已经有这个问题几天了,我似乎无法克服它,如果我在英国夏令时的任何时候发布一天活动,那么在 FullCalendar 中呈现的活动将显示为两天活动并将日期向后一小时并移动这一天(请参见下图),SQL 应该是这样并显示正确的日期时间,但日历呈现不正确。

我认为问题在于 Json 是以 ASP.net 日期时间而不是 ISO8601 的形式出现的,我已尽我所能来改变这一点,但我是 .net 和 MVC 的新手,所以我无法理解什么去做。

由于我没有足够的代表,我无法发布事件图片的链接......

对象中出来的数据图片-

JsonObject

SQL 中正确 DateTime 的 DB 截图 -

SQL DateTime

这是我们的 MCV5 / FullCalendar 项目的设置方式

型号-

    public int Id { get; set; }

    //Auto Populate
    public string Subject { get; set; }

    public string Description { get; set; }

    public DateTime? StartTime { get; set; }
    public DateTime? EndTime { get; set; }

    public bool? AllDay { get; set; }
    public bool? isAMLeave { get; set; }
    public bool? isPMLeave { get; set; }

    public string ETADType { get; set; }
    public string ETADSubType { get; set; }

    [ForeignKey("AssignedRole")]
    public int SelectRole { get; set; }
    public bool? AllRoles { get; set; }

    public int StaffID { get; set; }

    public int EventStatus { get; set; }

    /*Approval Details*/
    public int? ApporovedId { get; set; }
    public DateTime? ApprovedDate { get; set; }


    public DateTime EventDate { get; set; }

    /*soft audit*/
    public double Duration { get; set; }
    public string EventAction { get; set; }

    public virtual AssignedRoles AssignedRole { get; set; }


}

JsonResult -

 public JsonResult GetDiaryEventsDivOne()
    {
        if (User.IsInRole("Global Admin"))
        {
            var date = new Date(jsonDate);

            var _DivisionOneList = from e in db.DiaryEvent
                                   join lt in db.EventStatus on e.EventStatus equals lt.Id
                                   join t in db.ETAD_EventTypes on e.ETADType equals t.ETADID.ToString()
                                   join st in db.ETAD_EventSubType on e.ETADSubType equals st.ETADSubID.ToString()
                                   join sid in db.AssignedRoles on e.StaffID equals sid.UserID
                                   join tid in db.Teams on sid.TeamId equals tid.TeamID
                                   join div in db.Divisions on sid.DivisionId equals div.DivisionID
                                   join sd in db.SubDivisions on sid.SubDivisionId equals sd.SubDivisionID
                                   join sp in db.JobRoles on sid.JobRoleID equals sp.JobRoleID
                                   where div.DivisionID == 1
                                   select new
                                   {
                                       id = e.Id,
                                       title = e.Subject,
                                       description = e.Description,
                                       start = e.StartTime,
                                       end = e.EndTime,
                                       etad = t.ETADDescription.ToString(),
                                       etadsub = st.Description.ToString(),
                                       color = t.Colours.HexCode,
                                       user = sid.StaffProfiles.Fullname,
                                       jobtitle = sp.JobTitle.ToString(),
                                       allroles = e.AllRoles,
                                       division = div.DivisionName,
                                       subdivision = sd.SubDivisionName,
                                       allDay = false

                                   };

            var rows = _DivisionOneList.ToArray();
            return Json(rows, JsonRequestBehavior.AllowGet);

最后是我的 JS

$(document).ready(function () {
$('#calendar').fullCalendar({
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay'
    },
    eventSources: [
        source1,
        source2
    ],
    timezone: 'Europe/London',
    defaultView: 'month',
    editable: false,
    contentHeight: 700,
    selectable: true,
    eventClick: function (event, jsEvent, view) {         
        $("#startTime").html(moment(event.start).format('DD-MM-YYYY HH:mm'));
        $("#endTime").html(moment(event.end).format('DD-MM-YYYY HH:mm'));
        $('#modalTitle').html(event.title);
        $('#user').text(event.user);
        $('#modalBody').text(event.description);
        $('#etad').html(event.etad);
        $('#etadsub').html(event.etadsub);         
        $('#fullCalModal').modal('show');
        $("#removeBtn").click(function () {
            $.ajax({
                type: 'POST',
                url: "/BookingTwo/DeleteEvent",
                data: {
                    "id": event.id
                },
                success: function () {
                    $('#calendar').fullCalendar('removeEvents', event.id);
                    $('#fullCalModal').modal('hide');
                },
                statusCode: {
                    202: function (reponose) {
                        $('#calendar').fullCalendar('refetchEvents');
                        $('#alert').addClass('alert alert-success').removeClass('alert-warning');
                        $("#alert").removeClass("hidden");
                        $("P").replaceWith("Success - Event Deleted")
                        $("#alert").fadeTo(5000, 500).slideUp(500, function () {
                            $('#alert').addClass("hidden");
                        })
                    },
                    409: function (reponse) {
                        $('#calendar').fullCalendar('refetchEvents');
                        $("#alert").removeClass("hidden");
                        $("P").replaceWith("Event already actioned.")
                        $("#alert").fadeTo(5000, 500).slideUp(500, function () {
                            $('#alert').addClass("hidden");
                        })
                    },
                    400: function (reponse) {
                        $('#calendar').fullCalendar('refetchEvents');
                        $("#alert").removeClass("hidden");
                        $("P").replaceWith("Access Denied - Not your leave request.")
                        $("#alert").fadeTo(5000, 500).slideUp(500, function () {
                            $('#alert').addClass("hidden");
                        })
                    }
                }
            });
        });
    },

【问题讨论】:

    标签: asp.net-mvc-5 fullcalendar


    【解决方案1】:

    我已经通过设置解决了这个问题

    时区; '本地'

    我以为我已经在参数中设置了这个,但我把 Europe/London 放了

    对于遇到相同问题的任何人,请查看您的 JS 中的时区设置以获取 FullCalendar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多