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

时间:2014-01-16 06:58:34

标签: 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);

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

5 个答案:

答案 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 - YYYYDD无效的格式说明符。

答案 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;
    }