![](/img/trans.png)
[英]C# DateTime Conversion from yyyy-MM-ddTHH:mm:ss to dd MMM yyyy
[英]C# Parse to the yyyy-MM-ddTHH:mm:ss format String was not recognized as a valid DateTime
我正在嘗試解析Mon, 11 Mar 2019 09:13:16 +0100
到2019-03-11T09:13:16
string dataa = "Mon, 11 Mar 2019 09:13:16 +0100";
DateTime d = new DateTime();
d = DateTime.ParseExact(dataa,"yyyy-MM-ddTHH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine("data: "+d);
但錯誤是:
字符串未被識別為有效的 DateTime。
是否有任何方法可以自動進行此解析? 謝謝大家。
更新
如下所述,就像其他用戶回復我一樣,我首先需要函數 ToString(String, IFormatProvider)。
當您使用ParseExact
,您的字符串和格式應該完全匹配。
正確的格式是: ddd, d MMM yyyy hh:mm:ss zzz
(或HH
,取決於您的小時格式)
解析后,您需要使用ToString
將其格式化為yyyy-MM-dd'T'hh:mm:ss
格式(或HH
取決於您想要12 小時制還是24 小時制格式)
我想我必須添加一些很多人混淆的解釋(特別是編程初學者)。 一個DateTime
實例沒有任何格式。 它只有日期和時間值,基本上是一個名為Ticks
的數值。 當您談論“格式”概念時,它指向文本表示,即string
。
由於您說“ Mon, 11 Mar 2019 09:13:16 +0100
to 2019-03-11T09:13:16
”,我(可能還有很多人)假設您有一個字符串作為Mon, 11 Mar 2019 09:13:16 +0100
並且您想從中獲取2019-03-11T09:13:16
作為字符串。 為此,您需要先將字符串解析為 DateTime。 為此,正如您所做的那樣, ParseExact
是一種選擇。
當您將其解析為DateTime
,您會使用ToString
方法獲得它的文本表示形式,即string
。 此方法有一些重載,您應該使用ToString(String, IFormatProvider)
重載。 這樣,您將輸出格式指定為第一個參數,將您的文化信息指定為第二個參數,由於:
和/
格式說明符,這可能會影響您的結果字符串,因為它們可以根據當前文化或提供的文化進行更改。
進一步閱讀: 自定義日期和時間格式字符串
您需要指定輸入數據的格式( DateTime.ParseExact
的第二個參數)。 在您的情況下,您提供的數據格式為ddd, d MMM yyyy hh:mm:ss zzz
。 此外,在最后一行打印結果時,您必須對其進行格式化。
所以,這是你必須做的:
string dataa = "Mon, 11 Mar 2019 09:13:16 +0100";
DateTime d = new DateTime();
d = DateTime.ParseExact(dataa, "ddd, d MMM yyyy hh:mm:ss zzz", System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine("data: " + d.ToString("yyyy-MM-dd'T'hh:mm:ss"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.