15

我想将日期“01/22/2013 10:00:00”转换为“22/01/2013 10:00:00”,但我的方法无法识别我的日期字符串。

 DateTime dt = DateTime.ParseExact(StartDate, "MM dd yyyy h:mm", CultureInfo.InvariantCulture);
            StartDate = dt.ToString("dd/M/yyyy");
 dt = DateTime.ParseExact(EndDate, "MMM dd yyyy h:mm", CultureInfo.InvariantCulture);
            EndDate = dt.ToString("dd/M/yyyy");

我收到此错误:

System.FormatException - 字符串未被识别为有效的 DateTime。

ParseExact 的正确字符串格式是什么?

4

4 回答 4

19

您的日期格式错误,对于美国来说01/22/2013 10:00:00MM/dd/yyyy HH:mm:ss. 对于英国来说,它会是dd/MM/yyyy等等。

DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

dt.ToString("dd/MM/yyyy");

注意我假设这里是 24 小时制,这就是我使用HH. 如果你想要一个 12 小时制的时钟,hh那么你也应该输入 AM/PM 等。

于 2013-02-05T09:42:58.220 回答
5

使用此代码:

DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture);
            StartDate = dt.ToString("dd/MM/yyyy hh:mm:ss");

注意格式字符串的变化ParseExact

于 2013-02-05T09:45:54.133 回答
1

您正在使用斜杠,并且日期字符串中有“秒”部分。您需要更改ParseExact方法中提供的格式:

string StartDate = "01/22/2013 10:00:00";            
DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
StartDate = dt.ToString("dd/M/yyyy");
于 2013-02-05T09:44:22.870 回答
1

尝试这个

var str = "01/22/2013 10:00:00";
var date = DateTime.ParseExact(str, "MM/dd/yyyy HH:mm:ss", new CultureInfo("en-GB"));
var res = date.ToString("dd/MM/yyyy HH:mm:ss", new CultureInfo("en-GB"));
Console.WriteLine(res);
Console.WriteLine("22/01/2013 10:00:00" == res);
于 2013-02-05T09:46:16.033 回答