2014-10-02 28 views
-3

如何將日期格式轉換爲以下格式:2014-02-06T17:20:28.107Z :1/28/2014 18: 07如何將日期時間與偏移量轉換爲MM/dd/yyyy hh:mm

我嘗試這樣做:

public string FormatDate(string date) 
{ 
    DateTime dt = DateTime.ParseExact(date.ToString(), "MM/dd/yyyy hh:mm", CultureInfo.InvariantCulture); 

    return dt.ToString(); 
} 

其中返回的格式異常

+6

這個問題/這個問題的許多變種已經在SO之前被問及和回答。請使用這個網站作爲資源,在你看過之前不要問一個問題:( – jbutler483 2014-10-02 16:09:35

+0

你不覺得我看上去了嗎? – user1526912 2014-10-02 16:11:05

+1

我還是無法弄清楚日期的日期,月份和時間是如何變化的? – Habib 2014-10-02 16:11:28

回答

3

它看起來像你試圖格式化字符串時分析,而不是當你打印出來。

ParseExact method,格式參數是什麼格式的輸入預計在。

要格式化的輸出來代替。

由於輸入看起來像ISO8601,所以簡單的解析就可以工作。

我想你想要做的是更容易:

public string FormatDate(string date) 
{ 
    DateTime dt = DateTime.Parse(date); 

    return dt.ToString("MM/dd/yyyy hh:mm", CultureInfo.InvariantCulture); 
} 

我沒有Visual Studio的,所以我沒有辦法現在對它進行測試,但是這絕對接近你要做什麼。

+0

它絕對是比較安全的,但在這個具體的例子中並不需要,是嗎?主要是因爲輸入看起來是一個標準的ISO日期/時間格式。 上面看起來似乎是最快的解決方案,但如果輸入發生改變或類似的情況發生,可能會造成麻煩。 – NealSr 2014-10-02 16:28:46

+0

對不起,沒有看到你的答案的部分,我不知道這是一個標準格式:) – 2014-10-02 16:30:45

-2

是從字符串數據的DateTimeOffset類型來了嗎?如果是這樣,您可以通過屬性date.DateTime訪問DateTime版本(在這種情況下,DateTimeOffset類型不是字符串)。

如果它以字符串的形式出現,那麼可能是先嚐試解析DateTimeOffset?

+0

Im從APi作爲一個字符串拉日期:2014年-02-06T17:20:28.107Z – user1526912 2014-10-02 16:12:23

1

您的模式與您的輸入格式完全不符。它看起來像你不明白它是如何工作的

首先應用Parse與適當的模式獲取DateTime,然後將其轉換爲具有正確模式的字符串後。

DateTime dt = DateTime.ParseExact("2014-02-06T17:20:28.107", "yyyy-MM-ddTHH:mm:ss.FFFZ", CultureInfo.InvariantCulture); 

return dt.ToString("MM/dd/yyyy HH:mm"); 

在這種情況下,「return」會產生一個包含「02/06/2014 05:20」的字符串。

上述模式似乎是您需要對您的格式進行顯式分析的模式,儘管可能爲它們預留了一些快捷方式,但您的日期看起來是標準的ISO格式,所以也許簡單的Parse會起作用。我的文章主要是爲了解釋你想要忽略的地方,以及如何使用「解析」。

相關問題