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

C# 在c中将日期格式从mm dd yyyy转换为dd mmm yyyy#,c#,asp.net,date,C#,Asp.net,Date,我正在尝试将asp.net表单字段值插入到oracle数据库表中。我有一个“MM-DD-YYYY”格式的日期字段。我需要将该日期添加到oracle表中。因此,我尝试将该日期格式转换为“DD-MMM-YYYY”格式。但是我得到了以下错误 代码: 文本框值为:12-12-2013。(无时间) 我遇到了类似“字符串未被识别为有效日期时间”的错误。您的月份有三个M,用于月份名称。只用两个M.试试这个 DateTime dt = Convert.ToDateTime(CreationDateTextBox

我正在尝试将asp.net表单字段值插入到oracle数据库表中。我有一个“MM-DD-YYYY”格式的日期字段。我需要将该日期添加到oracle表中。因此,我尝试将该日期格式转换为“DD-MMM-YYYY”格式。但是我得到了以下错误

代码:

文本框值为:12-12-2013。(无时间)
我遇到了类似“字符串未被识别为有效日期时间”的错误。

您的月份有三个M,用于月份名称。只用两个M.

试试这个

DateTime dt = Convert.ToDateTime(CreationDateTextBox.Text);
var creation_date=String.Format("{0:dd-MMM-yyyy}", dt)
或尝试

 dt.ToString("dd MMM yyyy"); 
您需要使用
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
}
尽可能避免字符串转换。事实上,理想情况下,使用某种描述的日期/时间选择器,而不仅仅是一个文本字段,这将为用户提供更好的体验,并降低转换不良的风险

还请注意,每当您想要使用自定义字符串转换(解析或格式化)时,您应该阅读-
yyy
DD
不是有效的格式说明符。

这可能会有帮助:)


@Sandeepredyk。这不是关于你需要的格式,而是关于你在文本框中的格式。datetime对象没有格式,您在打印时会给它一个格式。罗兰的回答是正确的。虽然OP确实需要两个毫秒,但他们还需要以其他方式更改格式-
DD
YYYY
不是有效的自定义格式说明符,并且对于指定的输入格式,顺序不正确。然后OP也询问了如何格式化结果,这个答案没有提到。可能重复的你有没有尝试检查互联网上的链接???你被绞死了:)请尝试
DateTime.ParseExact(“2013年12月12日”,“dd-MMM-yyyy”,null)
A没有格式。这基本上是一个奇特的
Int64
计数滴答声。因此,您无法将日期时间从一种格式“转换”为另一种格式。您可以“转换”(即解析)一个
字符串
,以获得
日期时间
。但要做到这一点,您需要告诉解析方法您解析的
字符串的格式。在这种情况下:
“MM dd yyyy”
。然后,如果您想显示那个抽象的记号数,可以将它转换回您喜欢的可读形式:
date.ToString(“dd-MMM-yyy”)
。但将其放入数据库不需要这样做。OP似乎是在做日-月-年,而不是月-日-年,尽管2013年12月很难确定。@paqogomez:不,“我有一个日期字段,格式为“MM-DD-YYYY”。(请看标题。)他们在当前的代码中使用了错误的方法。我不应该怀疑。为什么要使用复合字符串格式,而不仅仅调用
dt.ToString(“…”)
?无论如何,我并不认为使用格式是个好主意…@JonSkeet我同意你的看法,但据我所知,你不能使用datetime打印
MMM
,你绝对可以,但这与使用
ToString
vs
String.format
是完全正交的。再说一次,我根本不会设置值的格式。
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
}
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
    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;
    }