2016-03-10 4 views
0

Я использую самозагрузки Datetime сборщика v3 с следующим вариантомПреобразовать bootstrap3 DateTime Picker для C# DateTime

$(".form_datetime").datetimepicker({ 
      autoclose: true, 
      isRTL: Metronic.isRTL(), 
      format: "dd MMyyyy hh:ii", 
      pickerPosition: (Metronic.isRTL() ? "bottom-right" : "bottom-left") 
     }); 

Когда я получаю результат подборщика я получаю что-то вроде "10 March 2016 - 10:50" я не могу преобразовать его в C# DateTime C# возвратным меня следующая ошибка

inputStartDate = Convert.ToDateTime(txtDatetime.Text);  

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

ответ

0

DateTime.TryParseExact() будет работать очень хорошо с помощью пользовательского формата. Вот пример:

string input = "10 March 2016 - 10:50"; 
DateTime dateTime; 
DateTime.TryParseExact(input, "dd MMMM yyyy - HH:mm", CultureInfo.InvariantCulture, 
    DateTimeStyles.None, out dateTime); 

Мне нравится использовать «Попробуйте» варианты синтаксического анализа, чтобы избежать исключения. Если это не удается, вы получите значение по умолчанию (это MinValue в случае DateTime), никакого вреда не было сделано. Вы также получите значение bool, что указывает на успех или неудачу. Однако этот пример работает.

1

Convert.ToDateTime использует стандартный формат даты и времени текущей культуры Настройки по умолчанию. Похоже, что этот формат не один из них.

В вашем случае, вам нужно использовать пользовательский формат, как dd MMMM yyyy - HH:mm, английской основой культуры как InvariantCulture с DateTime.ParseExact метод, как;

var inputStartDate = DateTime.ParseExact(txtDatetime.Text, 
             "dd MMMM yyyy - HH:mm", 
             CultureInfo.InvariantCulture); 

enter image description here

0

Попробуйте это другой формат даты и времени:

$(".form_datetime").datetimepicker({ 
      autoclose: true, 
      isRTL: Metronic.isRTL(), 
      format: "dd MM yyyy - hh:ii", 
      pickerPosition: (Metronic.isRTL() ? "bottom-right" : "bottom-left") 
     });