2009-12-09 62 views
1

我有一個24小時格式的DateTime字符串..「2009-12-31T23:59:59」
我想要這種格式..「 12/31/2009 23:59:59「即:」MM/DD/YYYY HH:MM:SS「

當我嘗試將它轉換爲字符串時,我得到」2009年12月31日11:59: 59 PM「..雖然我可以寫一個代碼字符串操作 ..它似乎不是一個有效的..此外情況變​​得最糟糕時,我有dateTime值如」2009-1-1T1:19: 15「..這裏,由於字符串的長度是變化的,我甚至不能使用substring()和convert.ToInt()來追蹤小時和月的值。

我使用Visual Studio 2005,它拋出錯誤說「無法隱式轉換日期時間爲字符串」當我寫這篇文章的語句: ..
如何自定義日期時間格式或將DateTime轉換爲所需格式的字符串

result = Convert.ToString(dateValue); 

我簡化我的問題: 是否有任何方法轉換 「YYYY-MM-DDTHH:MM:SS」 格式 「MM/DD/YYYY HH:MM:SS」。而它必須在Visual Studio 2005年工作..

回答

4

您需要使用ParseExact讓它回到日期時間:

string FormatDateTime(string dateString) { 
    DateTime dt = DateTime.ParseExact(dateString, "yyyy-MM-ddTHH:mm:ss", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None); 
    return dt.ToString("MM/dd/yyyy HH:mm:ss"); 
} 

這應該給你正在尋找你想要的輸出。通過使用InvariantInfo,它將確保您的系統設置不會替換當前在系統中定義的任何斜線。我想我在評論中看到你有一個「。」。被用作日期分隔符。

http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.dateseparator.aspx http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.invariantinfo.aspx

+0

無需編寫ParseExact,只需要給日期格式語句dateVaule.toString(date_format)..就像這樣「MM」/'dd'/'yyyy''HH':'mm':'ss'..多數民衆贊成足夠.........邪惡是正確的.. – 2009-12-09 06:25:00

+0

你是什麼意思dateValue?你在原始文章中沒有提到這一點。你真的需要學習如何提問。 你可能沒有意識到,但是如果你讓純粹的Parse嘗試並找出日期格式,則需要比提供它更長的時間,從而在解析器中進行初始化。這就是爲什麼有兩種不同的方法。第二個邪惡是把他的整個事情都放在他的機器上,這似乎在運行一個非標準的設置。但是你不應該破壞自己的格式化,「/」是日期分隔符,而你希望它始終是「/」,使用支持它的文化。 – 2009-12-09 19:48:08

+0

在您的示例日期字符串中 – 2009-12-11 06:49:21

1
string FormatDateString(string date_string) 
{ 
    DateTime date; 
    if (!DateTime.TryParse(date_string, out date) 
    { 
     return null; 
    } 

    return date.ToString("MM/dd/yyyy HH:mm:ss"); 
} 
+2

我覺得格式應爲 「MM '/' DD '/' YYYY ' 'HH': '毫米':' SS」 – 2009-12-09 05:26:01

+0

邪惡,你介意解釋撇號的的意義你的格式?我對此並不熟悉。 Thx :) – Russell 2009-12-09 05:30:45

+2

從msdn:「' - 表示帶引號的字符串(撇號)。顯示兩個撇號(')字符之間的任意字符串的文字值。」 當您使用撇號時,將明確定義delimeter。 – 2009-12-09 05:34:43

2

喜歡的東西:

string s = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss"); 
+1

當我嘗試你的代碼,我得到以下內容: DateTime.Now.ToString(「MM/dd/yyyy HH:mm:ss」)\t「12.09.2009 10:26:09」 – 2009-12-09 05:29:43

+1

不,他說得對。您系統中的默認分隔符已被定義爲「。」代替 」/」。看到這個屬性:http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.dateseparator.aspx – 2009-12-09 05:34:30

+2

是的,因爲它,我們應該使用「MM」/'dd'/'yyyy'' HH ':' 毫米 ':' SS」。 – 2009-12-09 05:35:50

相關問題