将日期时间转换为英国格式

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时,正确的字符串格式是什么?


1
很容易看出字符串应该是 MM/dd/yyyy HH:mm:ss,即使没有查看文档。 - Jon
4个回答

19

你的日期格式有误,对于美国应该是01/22/2013 10:00:00,即MM/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,但那时您还应该加上上午/下午等标识。


5
请使用以下代码:
DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture);
            StartDate = dt.ToString("dd/MM/yyyy hh:mm:ss");

请注意ParseExact的格式字符串的更改。


2

试试这个

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);

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");

"hh" 不正确,应该是 "HH"。 - Jon
它能正常工作是因为10是合法的。尝试使用23,看看会发生什么。 - Lloyd
但是据我所知,英国时间使用上午/下午制吗? - daryal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接