2016-09-05 62 views
0

我正在使用Java客戶端,它返回給我一個日期,如2016-09-02T16:18:54.000 UTC。注意結尾,這不完全是標準格式。解析(幾乎)RoundtripKind日期在C#

如果我修剪「UTC」我可以成功地解析日期:

DateTime.Parse("2016-09-02T16:18:54.000") 

但結果的種類是不確定的,而不是UTC(顯然)的;我可以通過用「Z」替換「UTC」來避開這種情況,如下所示:

DateTime.Parse("2016-09-02T16:18:54.000Z", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind) 

但是,理想情況下,我不想亂用輸入。

過幾刺在這個與TryParseExact和不同的格式,但與每一個失敗:

DateTime.TryParseExact("2016-09-02T16:18:54.000 UTC", new [] { 
"o", 
"yyyy-MM-dd hh:mm:ss:fff UTC", 
"yyyy-MM-ddhh:mm:ss:fff UTC", 
"yyyy-MM-ddThh:mm:ss:fff UTC" 
}, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out startDate) 

我敢肯定的「UTC」關鍵字不是問題(因爲others已經成功地使用它),而是「T」,我似乎無法知道如何解析:甚至不是我想在我的第二代碼片段被隱式地使用了「O」的格式,似乎工作:

DateTime.TryParseExact("2016-09-02T16:18:54.000Z", "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out startDate) 

回答

1

如果你的輸入就像2016-09-02T16:18:54.000 UTC,這對我有用:

DateTime.TryParseExact("2016-09-02T16:18:54.000 UTC", 
"yyyy-MM-ddTHH:mm:ss.fff UTC" 
, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out startDate); 
+0

@CodeCaster根據OP問題,他的輸入是'2016-09-02T16:18:54.000 UTC'? – Pikoh

+0

UTC之前的空間不是問題,用HH代替hh修復它,謝謝磨坊! –

+0

不客氣@AlexandruMarculescu – Pikoh