2011-03-28 21 views
7

我通過向DateTime.ToString方法提供文化信息來顯示本地化的短日期。現在我正在使用DateTime.ToString格式

x.ToString("d", ci); // 23.12.2000 

顯示短日期。但現在我想還包括縮寫的日期名稱。我試圖

x.ToString("ddd d", ci); // pon 23 

但現在d成爲天符,而不是短日期格式所以不是一天名稱和短日期我只得到一天名稱和日數。

我該如何說服格式化工來顯示預定義的文化短日期格式?

回答

9

如何:

string.Format(ci, "{0:ddd} {0:d}", x) 
+1

不應該是格式的「{0:ddd d}」嗎? – Manatherin 2011-03-28 10:28:07

+3

不是,它不會工作,因爲它會返回,引用羅伯特「pon 23」而不是「pon 23.12.2000」 – 2011-03-28 10:29:14

+0

@ Manatherin,不,這將有與原始問題中的示例完全相同的問題。我更喜歡我的方法,但克里斯托弗也簡潔地解決了這個問題。 – 2011-03-28 10:31:47

0

看看這樣的解釋:

http://www.csharp-examples.net/string-format-datetime/

也許你可以找到一些例子在那裏。

更新

作爲迴應的意見,實施例3中第一個代碼塊中明確規定如何做到這一點:

String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day 

Google一份關於日期字符串格式化的問題,達不到這個問題如果有一個很好的例子,那麼它將會更有價值。因此引用了csharp-examples網站。

+1

同樣來自谷歌的第一個結果複製/粘貼不方便。不要認爲這是值得的。答案是不正確的,或錯過了問題。 – 2011-03-28 10:19:13

+2

我認爲你錯過了一個觀點,問題是如何在文化特定格式中顯示「ddd」,然後顯示完整的短日期。您的代碼示例不會執行此操作。 – 2011-03-28 10:28:02

+0

更新的答案給出了完全錯誤的答案。它甚至評論了一個明顯錯誤的例子輸出。在給出的鏈接中沒有一個例子可以回答這個問題。答案是不正確的,並且錯過了這個問題。 – 2011-03-28 10:30:05

1
x.ToString("ddd ", ci) + x.ToString("d", ci); 
+0

是的。這是我在這裏得到一個很好的答案之前所做的。 – 2011-03-28 11:55:21

0

如果沒有別的,你可以:x.ToString("ddd", ci) + " " + x.ToString("d", ci);

4

「標準」格式的字符串通過獲取CultureInfoDateTimeFormat相當於物業工作。在這種情況下,"d"找到ShortDatePattern屬性,該屬性將類似於「dd.MM.yyyy」,「dd/MM/yyyy」,「MM/dd/yyyy」,「yyyy-MM-dd」等,具體取決於在有問題的地區。

因此,你可以利用它在一個自定義模式,像這樣:

x.ToString("ddd " + ci.DateTimeFormat.ShortDatePattern, ci) // Sat 2000-12-23 on my set up, should presumably be pon 23.12.2000 on yours 
+0

+1完全教會了我新的東西。我會用String.Format。很高興學習替代品。 – Kamal 2011-03-28 10:36:25

+0

根據@Kristoffer的說法String.Format Jansson的回答是對同一只貓進行皮膚處理的一種很好的方法,儘管上面的方法可以處理一些更復雜的情況,您希望將字符串從一個地方傳遞到ToString( )調用另一個(因此不能從ToString()更改爲String.Format())。是的,它*很高興知道標準格式如何工作:) – 2011-03-28 10:42:54

+0

+1:尼斯方法@Jon Hanna。 – 2011-03-28 11:54:48

相關問題