将bootstrap3 DateTime选择器转换为C#datetime

时间:2016-03-10 08:17:57

标签: c# .net datetime twitter-bootstrap-3

我使用bootstrap Datetime选择器v3和以下选项

 $(".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。

3 个答案:

答案 0 :(得分:1)

Convert.ToDateTime默认使用当前文化设置的标准日期和时间格式。看起来这种格式不是其中之一。

在您的情况下,您需要将自定义格式用作dd MMMM yyyy - HH:mm基于英语的文化,例如InvariantCultureDateTime.ParseExact方法一样;

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

enter image description here

答案 1 :(得分:1)

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值,表示成功或失败。不过,这个例子很有用。

答案 2 :(得分:0)

试试这个,另一种日期时间格式:

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