2011-06-14 77 views
127

我希望我的日期時間轉換爲一個字符串,它是在格式爲「DD/MM/YYYY」爲什麼DateTime.ToString(「dd/MM/yyyy」)給我dd-MM-yyyy?

每當我把它轉換使用DateTime.ToString("dd/MM/yyyy"),我得到dd-MM-yyyy代替。

是否有某種文化信息需要設置?

+0

做則DateTime.ToString( 「DD/MM/YYYY」); – jimplode 2011-06-14 12:15:15

+1

我這樣做,它沒有工作,問題不是日期,它的「 - 」,我想它是一個「/」像我指定 – Diskdrive 2011-06-14 12:17:33

+7

使用MM而不是毫米 - mm代表分鐘和不是幾個月。 – ThePower 2011-06-14 12:30:37

回答

194

溼地是一個日期分隔符,所以將使用當前區域性的日期分隔符。

如果你想硬編碼它總是使用斜線,你可以做這樣的事情:

DateTime.ToString("dd'/'MM'/'yyyy") 
+1

這些不是反斜槓 – spender 2011-06-14 12:18:51

+1

@spender - 在一些文化中,他們是 – 2011-06-14 12:19:36

+0

感謝您的快速回答您是對的我會給你正確的答案 – Diskdrive 2011-06-14 12:19:38

44

CultureInfo.InvariantCulture爲日期時間的第二個參數,它會返回的字符串爲你想要什麼,即使是非常特殊的格式:

DateTime.Now.ToString("dd|MM|yyyy", CultureInfo.InvariantCulture) 

將返回: 28 | 02 | 2014

+0

此代碼比接受的答案更清楚(我的意思是添加了CultureInfo)。它看起來至少比撇號的斜線更好。 – Sergey 2016-06-22 15:09:44

+0

這絕對是最好的方法,謝謝。 – Arwin 2016-07-20 07:54:42

+1

絕對比使用轉義字符更容易閱讀。我有點震驚,我不知道我的日期格式會被覆蓋的整個時間! – Savage 2016-07-28 14:09:48

6

添加CultureInfo.InvariantCulture作爲參數:

using System.Globalization; 

... 

var dateTime = new DateTime(2016,8,16); 
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 

返回結果:

"16/08/2016" 
+0

如果開發人員使用帶有某些字母(如M m ss等)的tostring方法將得到錯誤的結果,例如您的解決方案 例如Datetime.Now.ToString(「yyyy/dd/mm/Month」,CultureInfo.InvariantCulture)將不會生成2017/01/02/Month這將導致2017/01/02/2月 – 2017-11-13 17:22:01

+0

@OkanSARICA如果您希望在「/ Month」後綴日期,則應該在ToString方法之後執行。 DateTime.Now.ToString(「yyyy/MM/dd」,CultureInfo.InvariantCulture)+「/ Month」; – 2017-11-15 08:09:05