在c#中将日期格式从mm-dd-yyyy转换为dd-mmm-yyyy

San*_* K. 1 c# asp.net date

我正在尝试将asp.net表单字段值插入到oracle数据库表中.我有一个日期字段,格式为"MM-DD-YYYY".我需要将该日期添加到oracle表.所以我试图将该日期格式转换为"DD-MMM-YYYY"格式.但我收到以下错误.

码:

var creation_date = DateTime.ParseExact(CreationDateTextBox.Text, "DD-MMM-YYYY",null);
Run Code Online (Sandbox Code Playgroud)

文本框值是:12-12-2013.(没时间)我收到错误,如"字符串未被识别为有效的DateTime".

Jon*_*eet 8

您需要使用解析日期,MM-dd-yyyy但您根本不需要格式化它.只需将其作为DateTime使用参数化SQL 传递给数据库.

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
}
Run Code Online (Sandbox Code Playgroud)

尽可能避免字符串转换.实际上,理想情况下使用某些描述的日期/时间选择器而不仅仅是文本字段 - 这将为用户提供更好的体验并降低转换不良的风险.

另请注意,无论何时您想使用自定义字符串转换(解析或格式化),您都应该阅读MSDN文档 - YYYY并且DD它们不是有效的格式说明符.


小智 6

这可能会有所帮助:)

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
Run Code Online (Sandbox Code Playgroud)