隨心所欲的DateTime顯示格式


任何項目,難免會碰到DateTime的顯示問題,.net框架雖提供豐富多樣的顯示方法,但我很少使用,因老忘記細節,每次都要糾結到底月份在前還是年份在前;日期分隔符到底是“/”,還是“\”,還是“-”等等。

image

因此,每逢日期顯示,我的寫法通常類似下面代碼所示,這樣能根據需求取舍,隨心所欲的控制顯示格式、順序,也不用糾結分隔符到底是什么了,且ToString方法中,每個字符表示對應單詞的首字母,並不難記。

DateTime dt= new DateTime(2012,12,6,13,19,0);
dt.ToString( "yyyy-MM-dd hh:mm:ss tt zz"); // 2012-12-06 01:19:00 PM +08
  • y : 年
  • M : 月
  • d:日
  • hH:小時
  • m:分鍾
  • s:秒
  • t:12小時制的上下午(AM/PM)
  • z:時區

這些字符大小寫敏感,“h”和“H”分別對應12和24小時制時間。由於月-Month和分鍾-Minute首字母都是“M”,所以用大小寫來區分,大寫表月份,小寫表分鍾。

日和月的多樣化顯示

有時月份的顯示會多種多樣,有放開頭全英文顯示的,有只顯示前三個字母的,有放中間用逗號隔開的。而碰到這種情況,我見過有些代碼用switch-case依次判斷月份來實現,略顯麻煩,實際上,上文中的方法稍加改變就可完成。

比如月份,ToString方法中“M”的數量決定顯示格式。

dt.ToString( "MM");    // 12
dt.ToString( "MMM");   // Dec
dt.ToString( "MMMM"); // December

同理,代表日的“d”也有同樣的特性,不同點是“ddd”和“dddd”表星期而不是幾號。

dt.ToString( "dd");    // 06
dt.ToString( "ddd");   // Thu
dt.ToString( "dddd"); // Thursday

不同區域文化的日期

時間顯示難免會碰到區域文化的問題,比如運行最開始的例子,“PM”可能會顯示為“下午”:

dt.ToString( "yyyy-MM-dd hh:mm:ss tt zz"); // 2012-12-06 01:19:00 下午 +08

用文字顯示月份時,可能會直接顯示“十二月”:

dt.ToString( "MM");    // 12
dt.ToString( "MMM");   // 十二月
dt.ToString( "MMMM"); // 十二月

區域文化顯示不同往往會造成問題,為避免麻煩,就要指定具體的區域文化。一般來說,英文較常用的,指定方式也最簡單,使用CultureInfo類的靜態屬性InvariantCulture即可:

dt.ToString( "yyyy-MM-dd hh:mm:ss tt zz", CultureInfo.InvariantCulture); // 2012-12-06 01:19:00 PM +08

當需要使用其他的區域文化時,就要實例化指定的CultureInfo類,比如下例中分別顯示中文、日文、英文的星期:

dt.ToString( "dddd");                                 // 星期四
dt.ToString( "dddd", new CultureInfo( "ja-JP"));       // 木曜日
dt.ToString( "dddd", CultureInfo.InvariantCulture);   // Thursday

這里用“ja-Jp”表示日文,也可用“ja”。中文顯示時,可以指定“zh-TW”來顯示繁體字。如果想顯示其他區域文化的文字,可以到這個MSDN頁面的列表中查找對應字符。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM