2016-05-16 3 views
2

Я использую kendo time picker, чтобы показать время в пользовательском интерфейсе. Виджет представляет время в следующем формате Mon May 16 2016 01:00:00 GMT-0500 (Central Daylight Time)Ошибка анализа при преобразовании javascript datetime в C#

Я последовал за статью here преобразовать DateTime в .Net даты и времени объекта Однако я получаю сообщение об ошибке при разборе

{ "Строка не была признана действительный DateTime. "}

После того, как дата разобрана, я хочу преобразовать ее в UTC и сохранить временную часть в базе данных.

[HttpPost] 
    public ActionResult Save(MyModel model) 
    {     
     // getting error at line below while parsing  
     DateTime dt = DateTime.ParseExact(model.SelectedTimeString.Substring(0,33), 
         "ddd MMM d yyyy HH:mm:ss GMT-zzzz", 
         CultureInfo.InvariantCulture);   

     var utcTime = dt.ToUniversalTime().TimeOfDay; 

     // store utcTime in database here 

     return View("Index", model); 
    } 

cshtml

@using (@Html.BeginForm("Save", "Home")) 
    { 
     <div class="row"> 
      <div class="col-lg-6"> 
       @(Html.Kendo().TimePickerFor(x => x.SelectTime).Events(e => e.Change("changeDate")))   
       @Html.HiddenFor(x=>x.SelectedTimeString)   
      </div> 
     </div> 
     <button type="submit">Save</button> 
    } 

Javascript

<script type="text/javascript"> 
     function changeDate() {  
      var kendoDate = $('#SelectTime').getKendoTimePicker();  
      $('#SelectedTimeString').val(kendoDate.value()); 
     } 
    </script> 
+0

Преобразование его в UTC в браузере было бы намного проще ... (и показано, что вы уже связали) –

+0

Итак, как вы конвертируете эту строку даты в UTC в javascript – LP13

ответ

0

Ниже будет возвращать объект даты или ноль, если выбора даты является пустым или недопустимое значение:

var data = $('#SelectTime').data('kendoDatePicker').value(); 

Вы можете протестировать его, присвоив его переменной и выполнив data.getFullYear(). После этого вы можете использовать:

var dataAsJsonString = JSON.stringify(data); 

Это возвращает дату в формате UTC, что в строке, которая выглядит следующим образом: «2011-10-10T05: 00.000Z»

Вот пример скрипка: http://jsfiddle.net/MadCodeMonkey/191a7c53/