簡體   English   中英

DateTime.ParseExact對於'dd / MM / yyyy h:mm tt'格式返回錯誤的日期

[英]DateTime.ParseExact returns wrong date for the 'dd/MM/yyyy h:mm tt' format

我需要將日期時間從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對象應具有相同的Date。 要在某處顯示它,只需要將其轉換:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM