从Datepicker和timepicker add-on获取日期和时间,并在不使用字符串的情况下存储到DB中的DateTime列

时间:2013-11-26 10:00:01

标签: c# datetime datepicker

我从datepicker和timepicker add-on的组合中获取日期和时间,并希望存储此日期和时间,即“26-11-2013 23:50”或“26-11-2013 11:50 PM”进入SQL Server 2005 DateTime列。后来我想用日期来比较它们,比如date1> date2等。对于我的.aspx如下:

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
<script>
    $(document).ready(function () {
        $("#MainContent_txtDate").datetimepicker({
            dateFormat: "dd-mm-yy", changeYear: true, changeMonth: true, controlType: 'select',
            timeFormat: 'hh:mm tt',
            stepMinute: 15
        });
    });

</script>
<fieldset>
    <legend>Add Journey</legend>
    <h2>Add Journey</h2>

    <ol>
        <li>
            <asp:Label AssociatedControlID="txtDate" runat="server">Date</asp:Label>
            <asp:TextBox ID="txtDate" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtDate" CssClass="field-validation-error" ErrorMessage="Required"></asp:RequiredFieldValidator>
        </li>
</ol>
</fieldset>
</asp:Content>  

在.aspx.cs我正在做

        CultureInfo provider = CultureInfo.InvariantCulture;
        DateTime date = DateTime.ParseExact(txtDate.Text, "d", provider);
        Mytable.Column=date;  

它给出了FormatException。我尝试了DateTime date = DateTime.ParseExact(txtDate.Text, "dd-mm-yy hh:mm tt", provider);但结果相同。

我不想为此目的使用字符串(但txtDate.Text给出了字符串)

2 个答案:

答案 0 :(得分:1)

试试这个&#34; 26-11-2013 23:50&#34;:

   CultureInfo provider = CultureInfo.InvariantCulture;
string format = "dd-MM-yyyy HH:mm";
        DateTime date = DateTime.ParseExact(txtDate.Text, format, provider);
        Mytable.Column=date; 

小时数应为HH,这代表24小时制。 hh是您使用AM / PM的时候。

Demo on ideone.

答案 1 :(得分:0)

您有两种不同的格式 - 一种是24小时,另一种是AM / PM指示符。

你需要尝试用两者进行解析 - ParseExact有一个带有一系列格式字符串的重载,在这种情况下这是一个合适的重载:

var date = DateTime.ParseExact(txtDate.Text, 
                       new string[] {"dd-MM-yyyy HH:mm", "dd-MM-yyyy hh:mm tt"}, 
                       CultureInfo.InvariantCulture,
                       DateTimeStyles.None);

现在,您使用的格式字符串 - dd-mm-yy hh:mm tt错误地使用了mm几个月 - 它应该MM几个月,mm几分钟。