我需要将日期时间从MM/dd/yyyy h:mm:ss tt
格式转换为dd/MM/yyyy h:mm:ss tt
我的代码
var date = ((DateTime)model.WorkshopDate).ToString("dd/MM/yyyy h:mm:ss tt");
var resultDate = DateTime.ParseExact(date, "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
结果date = 25/12/2017 12:00:00 AM
但是resultDate = 12/25/2017 12:00:00 AM
.
我怎样才能正确解析它?
您正在调试器中查看对象,该对象是日期时间对象,而不是日期的显示版本。
例:
var theDate = DateTime.UtcNow;
var date = theDate.ToString( "dd/MM/yyyy h:mm:ss tt" );
var resultDate = DateTime.ParseExact( date, "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture );
Console.WriteLine(date == resultDate.ToString("dd/MM/yyyy h:mm:ss tt"));//Returns true
如您所见,它们是相同的日期,因此只需将其.ToString()
为显示时所需的任何格式即可。
您无需将其转换为String
并转换回DateTime
。生成的DateTime
对象应具有相同的日期。当您想在某处显示它时,您只需要转换它:
((DateTime)model.WorkshopDate).ToString("dd/MM/yyyy h:mm:ss tt");
这里
var date = ((DateTime)model.WorkshopDate).ToString("dd/MM/yyyy h:mm:ss tt");
您隐式要求在"dd/MM/yyyy h:mm:ss tt"中显示日期
var resultDate = DateTime.ParseExact(date, "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
此处系统默认格式用于显示日期。
如果要将两者显示为相同
Console.WriteLine(date);
Console.WriteLine(resultDate.ToString("dd/MM/yyyy h:mm:ss tt"));