将各种日期时间格式转换为特定格式
本文关键字:格式 转换 定格 时间 日期 | 更新日期: 2024-09-24 00:40:19
我正在开发一个应用程序,从用户那里获得各种日期时间格式(如27/02/2016 12:00:00 AM
、02/28/16 12:00:00 AM
、4/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.InvariantCulture
、CultureInfo.CurrentUICulture.DateTimeFormat
和CultureInfo.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
,它将测试当前区域性的所有可能的标准格式。
如果您知道文本是有效的,那么您可以使用ParseExact
或Parse
,然后直接对结果调用ToString
。如果您确实使用了Try
方法之一,则必须首先测试转换是否成功,如果成功,则可以对结果调用ToString
。
您可以这样转换:
string text = dateTime.ToString("MM/dd/yyyy HH:mm:ss.fff",
CultureInfo.InvariantCulture);