C# 将字符串转换为mm/dd/yyyy日期时间

C# 将字符串转换为mm/dd/yyyy日期时间,c#,asp.net,vb.net,date,datetime,C#,Asp.net,Vb.net,Date,Datetime,我正在尝试将文本框中的字符串转换为DateTime,例如格式为“03/24/2014”。 这就是我正在尝试的: CultureInfo us = new CultureInfo("en-US"); dtAssemblyDate = DateTime.ParseExact(txtOperationSignatureDate.Value, "dd/MM/yyyy", us); 或 但运气不好,我得到的例外是,该值不能转换为DateTime。 我怎样才能解决这

我正在尝试将文本框中的字符串转换为DateTime,例如格式为“03/24/2014”。 这就是我正在尝试的:

CultureInfo us = new CultureInfo("en-US");                    
dtAssemblyDate = DateTime.ParseExact(txtOperationSignatureDate.Value, "dd/MM/yyyy", us);

但运气不好,我得到的例外是,该值不能转换为DateTime。 我怎样才能解决这个问题? 提前感谢,拉齐尔

尝试使用

字符串日期=textbox.Value


DateTime dt=转换为ToDateTime(日期)

03/24/2014
不是
dd/MM/yyyy
格式的有效日期(一年中只有12个月1)

将格式字符串更改为
MM/dd/yyyy
,或使用所选格式的有效日期


1:在某些类型中为13个月,但
“en-US”
使用12个月。

03/24/2014
将月份的日期作为中间部分。这可能看起来很奇怪,但是(主要是北美洲)

因此,在指定解析格式时,还必须将月份(
dd
)放在中间:

CultureInfo us = new CultureInfo("en-US");                    
dtAssemblyDate = DateTime.ParseExact(txtOperationSignatureDate.Value, "MM/dd/yyyy", us);

显然,无法解析同时接受中端(
MM/dd/yyyy
)和小端(
dd/MM/yyyy
)日期的文本字段,因为像
01/02/2014
这样的歧义无法自动解决。

如果字符串以MM/dd/yyyy格式表示,则

DateTime myDate = DateTime.ParseExact("24/03/2014", "dd/MM/yyyy",
                                       System.Globalization.CultureInfo.InvariantCulture);
CultureInfo us = new CultureInfo("en-US");                    
dtAssemblyDate = DateTime.ParseExact(txtOperationSignatureDate.Value, "MM/dd/yyyy", us);
但我更喜欢使用DateTime.TryParse来避免意外

if(DateTime.TryParse(txtOperationSignatureDate.Value, 
                     CultureInfo.InvariantCulture, 
                     DateTimeStyles.None, 
                     out dtAssemblyDate))
    Console.WriteLine(dtAssemblyDate.ToShortDateString());

无论您需要什么DateTimeFormat,您只需要传递相应的区域性即可。

您的意思是
MM/dd/yyyy
?不清楚,您要基于区域性还是基于特定格式进行转换。如果ParseExact失败,那是因为字符串的格式不完全相同……请确保将正确的格式传递给ParseExact,并且不要放置cultureinfo,当您想要自己的格式而不是文本框时,这不是必需的,为什么不使用专为DateTime设计的控件,如DateTimePicker?那么你就不需要任何转换,因为你已经有了日期时间!
if(DateTime.TryParse(txtOperationSignatureDate.Value, 
                     CultureInfo.InvariantCulture, 
                     DateTimeStyles.None, 
                     out dtAssemblyDate))
    Console.WriteLine(dtAssemblyDate.ToShortDateString());
 CultureInfo us = new CultureInfo("en-US");
 DateTime dt = Convert.ToDateTime(txtOperationSignatureDate.Value, us.DateTimeFormat);