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

本文关键字:dd yyyy 日期 时间 mm 字符串 转换 | 更新日期: 2023-09-27 17:53:00

我正在尝试将来自文本框的字符串(例如,格式为"2014年3月24日"(转换为DateTime。这就是我正在尝试的:

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

dtAssemblyDate = DateTime.ParseExact(txtOperationSignatureDate.Value, "dd/MM/yyyy", null);

但运气不好,我遇到了无法将值转换为DateTime的异常情况。如何解决此问题?

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

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

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

1:在某些类型的Calendar中为13个月,但"en-US"使用12个月的公历

DateTime myDate = DateTime.ParseExact("24/03/2014", "dd/MM/yyyy",
                                       System.Globalization.CultureInfo.InvariantCulture);

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格式表示,则

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());
 CultureInfo us = new CultureInfo("en-US");
 DateTime dt = Convert.ToDateTime(txtOperationSignatureDate.Value, us.DateTimeFormat);

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

尝试使用

字符串日期=文本框。价值

DateTime dt=转换为DateTime(日期(;