将DateTime转换为英国格式
本文关键字:格式 为英国 转换 DateTime | 更新日期: 2023-09-27 17:57:34
我想将日期"2013年1月22日10:00:00"转换为"2013年2月22日10: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-字符串未被识别为有效日期时间。
ParseExact的正确字符串格式是什么?
您的日期格式错误,对于美国来说,应该是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
,但你也应该放AM/PM等。
使用此代码:
DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture);
StartDate = dt.ToString("dd/MM/yyyy hh:mm:ss");
注意ParseExact
格式字符串的更改。
您使用的是斜杠,并且日期字符串中有"秒"部分。您需要更改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");
试试这个
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);