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

将DateTime转换为英国格式

您的日期格式错误,对于美国来说,应该是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);