2016-10-28 4 views
0

При создании нового события данные сохраняются и извлекаются надлежащим образом из db. Однако планировщик kendo ui не показывает это правильно. Например, я создал событие для «2016-10-31 09: 00: 00.000», которое отображается в пользовательском интерфейсе в «2016-10-30 22:00». Я проверил значение, которое возвращается службой, оно приходит как 1477864800000, а на консоли оно печатается как «Пн 31 октября 2016 09:00:00 GMT + 1100 (AUS Eastern Daylight Time)».Kendo UI Scheduler TimeZone issue

Пожалуйста, совет, где все, что мне нужно упомянуть Часовой пояс: «Etc/UTC», или что может произойти неправильно в моем JS-коде.

  $(function() { 
        $("#scheduler").kendoScheduler({ 
         date: new Date(),    
         height: 600, 
         views: [ 
          "day", 
          { type: "week", selected: true }, 
          "month" 
         ], 
         editable: { 
          template: $("#customEditorTemplate").html(), 
         }, 
         timezone: "Etc/UTC", 
         error: error_handler,    
         dataSource: { 
          timezone: "Etc/UTC", 
          batch: true,     
          transport: { 
           read: { 
            url: "GetCalendarEvents", 
            contentType: "application/json; charset=utf-8", 
            dateType: "json" 
           }, 
           update: { 
            url: "UpdateCalendarEvent", 
            contentType: "application/json; charset=utf-8", 
            dataType: "json" 
           }, 
           create: { 
            url: "InsertCalendarEvent", 
            contentType: "application/json; charset=utf-8", 
            dataType: "json" 
           }, 
           destroy: { 
            url: "DeleteCalendarEvent", 
            contentType: "application/json; charset=utf-8", 
            dataType: "json" 
           }, 
           parameterMap: function (options, operation) { 
            if (operation === "read") { 
             var scheduler = $("#scheduler").data("kendoScheduler"); 

             var result = { 
              CreatedDate: new Date(new Date().getFullYear(), new Date().getMonth() - 6, new Date().getDate(), 0, 0, 0, 0), 
              EndDate: new Date(new Date().getFullYear(), new Date().getMonth() + 6, new Date().getDate(), 0, 0, 0, 0), 
              Creator: 1378 // ToDo::         
             } 

             return { models: kendo.stringify(result) }; 
            } 

            if (operation !== "read" && options.models) { 
             return { models: kendo.stringify(options.models) }; 
            } 
           } 
          }, 
          schema: { 
           model: { 
            "id": "EventID", 
            "fields": { 
             "EventID": { 
              "type": "number" 
             }, 
             "InteractionID":{ 
              "type":"number" 
             }, 
             "title": { 
              "from": "Subject", 
              "validation": { required: true } 
             }, 
             "description": { 
              "from": "Content" 
             }, 
             "start": { 
              "from": "CreatedDate", 
              "type": "date" 
             }, 
             "end": { 
              "from": "EndDate", 
              "type": "date" 
             }, 
             "ownerId": { 
              "from": "Creator", 
              "type": "number" 
             }, 
             "location": { 
              "from": "Location", 
              "type": "string" 
             }, 
             "Attendees": { 
              "type": "object" 
             }, 
             "startTimezone": { 
              "defaultValue": "Etc/UTC" 
             }, 
             "endTimezone": { 
              "defaultValue": "Etc/UTC" 
             } 
            } 
           } 
          } 
         } 
        }); 
       }); 
+0

Есть ли какая-либо логика преобразования часового пояса на стороне сервера? –

+0

Спасибо за ваш ответ. Я не делаю никакого преобразования, следующий код C#: EventModel eventModel = CommonLogic.JsonDeserializeObject <Список > (модели) [0]; – AaBa

ответ

0

Решение заключалось в том, чтобы установить CreatedDate и EndDate в формате UTC в классе сущностей.

private System.DateTime _endDate; 
    public DateTime EndDate 
    { 
     get 
     { 
      return _endDate; 
     } 
     set 
     { 
      _endDate = new DateTime(value.Value.Ticks, DateTimeKind.Utc); 
     } 
    } 

Кроме того, установка момента времени в DataSource и Schema не требуется. На уровне Планировщика должно быть хорошо.

Надеюсь, что это поможет.

Смежные вопросы