2010-10-18 37 views

回答

3

使用DateTime.ToString()

時,應使用CultureInfo控制格式一旦你設置你的當前線程的CurrentCulture然後嘗試以下方法:

DateTimeFormatInfo format = Thread.CurrentThread.CurrentCulture.DateTimeFormat; 
string dateTime = DateTime.Now.ToString(format.FullDateTimePattern); 
+0

System.Threading.Thread.CurrentThread.CurrentCulture返回DateTime (和.CurrentUICulture)。 – 2010-10-18 16:58:46

+0

文化正在設置,但它的日期時間格式不會改變。檢查上面的編輯 – Mulki 2010-10-19 07:52:47

+0

@Mulki - 我編輯了我的答案。謝謝 – codingbadger 2010-10-19 07:59:25

1

您可以使用擴展方法擴展日期時間並創建一個ToISOString()。

的方式來完成它

退房http://msdn.microsoft.com/en-us/library/bb383977.aspx。在擴展方法,你可以使用參數來格式化字符串你需要的方式,那麼你可以使用DateTime.ToISOString();你也可以像Barry說的那樣使用cultureinfo,但我不知道它是否符合你的需求。

+0

具有不同名稱的擴展將無濟於事......我需要它在dateTime.ToString上完成......這是爲了當一個數據表被解析爲text/Json/Xml我希望以上述格式輸出格式。 – Mulki 2010-10-18 15:08:14

2

您應該更新System.Threading.Thread.CurrentThread.CurrentCulture屬性。

這會影響在當前線程所有DateTime.ToString()

+0

Im將currentculture和uiculture設置爲編輯中提到的一個...文化正在與日期格式一起設置..但dateTimeObj.ToString()繼續以en-us格式顯示它...除了設置文化之外,還需要做其他事情嗎? – Mulki 2010-10-19 10:49:08

2

隨着阿爾賓和巴里的回答IV的幫助得到了下面的一塊代碼在Global.asax中統一設置的時間格式。

using System.Globalization; 
using System.Threading; 

protected void Application_BeginRequest() 
     { 
      CultureInfo standardizedCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 
      standardizedCulture.DateTimeFormat.DateSeparator = "-"; 
      standardizedCulture.DateTimeFormat.LongDatePattern = "yyyy-MM-dd hh:mm:ss"; 
      standardizedCulture.DateTimeFormat.FullDateTimePattern = "yyyy-MM-dd hh:mm:ss";   
      standardizedCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd"; 
      Thread.CurrentThread.CurrentCulture = standardizedCulture; 
      Thread.CurrentThread.CurrentUICulture = standardizedCulture; 
     } 
+0

我相信LongDatePattern =「s」;或「o」;也將完成這項工作。 – 2010-10-18 16:18:29

+0

想法派生自1)http://www.hanselman.com/blog/EnablingEvilOverridingSystemDateTimesDefaultToString.aspx 2)http://channel9.msdn.com/forums/TechOff/125490-ISO-8601-date-formats-in- ASPNET/ – Mulki 2010-10-21 07:08:23

0

我想請求的格式,即DateTIme.Now.ToString()將會對你的代碼的可讀性,一個非常不良影響(和可維護性..)。嘗試用自定義行爲覆蓋衆所周知的行爲是不好的做法。
考慮使用它像這樣的好方法:DateTIme.Now.ToString(IsDefaultFormat)
現在你需要做的就是添加一個擴展方法來DateTime接收一個bool,如果該布爾設置爲true,使用「默認格式」

+0

這是一個正在開發的web服務。我需要覆蓋的默認格式,以確保我不會以任何格式發送它,而是以單一標準的明確格式發送。除了默認的區域設置是en-US日期格式,這對我來說是非常困惑的,因爲整個開發團隊在這裏遵循en-GB。 – Mulki 2010-10-21 07:12:29