我从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给出了字符串)
答案 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的时候。
答案 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
几分钟。