我正在尝试将asp.net表单字段值插入到oracle数据库表中。我有一个日期字段,格式为“MM-DD-YYYY”。我需要将该日期添加到oracle表。所以我试图将该日期格式转换为“DD-MMM-YYYY”格式。但是我收到了以下错误。
代码:
var creation_date = DateTime.ParseExact(CreationDateTextBox.Text, "DD-MMM-YYYY",null);
文本框值为:12-12-2013。(没时间) 我收到错误,如“字符串未被识别为有效的DateTime”。
答案 0 :(得分:8)
您需要使用MM-dd-yyyy
解析日期,但您根本不需要格式化它。只需使用参数化SQL将其作为DateTime
传递给数据库。
DateTime creationDate;
if (DateTime.TryParseExact(CreationDateTextBox.Text, "MM-dd-yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None,
out creationDate))
{
// Use creationDate within a database command, but *don't* convert it
// back to a string.
}
else
{
// Handle invalid input
}
尽可能避免字符串转换。实际上,理想情况下使用某些描述的日期/时间选择器而不仅仅是文本字段 - 这将为用户提供更好的体验并降低转换不良的风险。
另请注意,无论何时您想使用自定义字符串转换(解析或格式化),您都应该阅读MSDN docs - YYYY
和DD
无效的格式说明符。
答案 1 :(得分:3)
试试这个
DateTime dt = Convert.ToDateTime(CreationDateTextBox.Text);
var creation_date=String.Format("{0:dd-MMM-yyyy}", dt)
或尝试
dt.ToString("dd MMM yyyy");
答案 2 :(得分:3)
这可能会有所帮助:)
String myString = "12-30-2014"; // get value from text field
DateTime myDateTime = new DateTime();
myDateTime = DateTime.ParseExact(myString, "MM-dd-yyyy",null);
String myString_new = myDateTime.ToString("dd-MM-yyyy"); // add myString_new to oracle
答案 3 :(得分:1)
本月有三个M,用于月份名称。只需使用两个M.
答案 4 :(得分:1)
private DateTime ConvertToDateTime(string strDateTime)
{
DateTime dtFinaldate; string sDateTime;
try { dtFinaldate = Convert.ToDateTime(strDateTime); }
catch (Exception e)
{
string[] sDate = strDateTime.Split('/');
sDateTime = sDate[1] + '/' + sDate[0] + '/' + sDate[2];
dtFinaldate = Convert.ToDateTime(sDateTime);
}
return dtFinaldate;
}