将各种日期时间格式转换为特定格式

本文关键字:格式 转换 定格 时间 日期 | 更新日期: 2024-09-24 00:40:19

我正在开发一个应用程序,从用户那里获得各种日期时间格式(如27/02/2016 12:00:00 AM02/28/16 12:00:00 AM4/18/2016 00:00:00…),并且必须将所有格式转换为M/dd/yyyy h:mm:ss

我试过了:

DateTime.ParseExact(dateText,"M/d/yyyy HH:mm:ss", null);
DateTime.ParseExact(dateText,"M/d/yyyy h:mm:ss tt", null);

我还用CultureInfo.InvariantCultureCultureInfo.CurrentUICulture.DateTimeFormatCultureInfo.CurrentCulture替换了null,这在许多关于将字符串转换为日期时间的问题中都提到了。

但我总是得到:

字符串未被识别为有效的DateTime

如果我这样编码,我可以转换27/02/2016 12:00:00 AM

DateTime.ParseExact(dateText,"d/M/yyyy hh:mm:ss tt", null);

但那不是我想要的。

是否可以使用一行代码或至少一种方法将任何日期时间格式转换为M/dd/yyyy HH:mm:ss

将各种日期时间格式转换为特定格式

如果您知道所有可能的格式是什么,那么您应该调用DateTime.TryParseExact的重载,该重载采用一组允许的格式。否则,您可能应该调用DateTime.TryParse,它将测试当前区域性的所有可能的标准格式。

如果您知道文本是有效的,那么您可以使用ParseExactParse,然后直接对结果调用ToString。如果您确实使用了Try方法之一,则必须首先测试转换是否成功,如果成功,则可以对结果调用ToString

您可以这样转换:

string text = dateTime.ToString("MM/dd/yyyy HH:mm:ss.fff",
                                CultureInfo.InvariantCulture);