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

时间:2016-04-18 05:19:00

标签: c# string datetime

我正在开发一个应用程序,我从用户那里获得各种日期时间格式(例如27/02/2016 12:00:00 AM02/28/16 12:00:00 AM4/18/2016 00:00:00,...),我必须将所有格式转换为{{ 1}}。

我试过了:

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); nullCultureInfo.InvariantCulture替换为many questions中提到的关于将字符串转换为日期时间的CultureInfo.CurrentUICulture.DateTimeFormat

但我总是得到:

  

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

如果我这样编码,我可以转换CultureInfo.CurrentCulture

27/02/2016 12:00:00 AM

但那不是我想要的。

是否有使用一个行代码或至少一种方法将任何日期时间格式转换为DateTime.ParseExact(dateText,"d/M/yyyy hh:mm:ss tt", null);

2 个答案:

答案 0 :(得分:1)

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

如果您知道文字有效,那么您可以改为使用ParseExactParse,然后直接在结果上调用ToString。如果你确实使用了Try方法之一,那么你首先要测试转换是否成功,如果是,那么你可以在结果上调用ToString

答案 1 :(得分:0)

你可以像这样转换它:

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