Asp.net 日期字串格式化顯示方法

iDotNetSpace發表於2009-11-30

在使用Asp.net的過程中,我們經常需要對時間日期進行轉換,達到不同的顯示效果。預設格式為:2006-6-6 14:33:34 ,如果要換成成200606,06-2006,2006-6-6或更多的格式該怎麼辦呢?
  這裡將要用到:DateTime.ToString的方法(String, IFormatProvider)

  示例:

以下是引用片段:
  using System;
  using System.Globalization;
  String format="D";
  DateTime date=DataTime.Now;
  Response.Write(date.ToString(format, DateTimeFormatInfo.InvariantInfo));


  結果輸出

  Thursday, June 16, 2006

  在這裡列出了引數format格式詳細用法

  =======================

  格式字元 關聯屬性/說明

  d ShortDatePattern

  D LongDatePattern

  f 完整日期和時間(長日期和短時間)

  F FullDateTimePattern(長日期和長時間)

  g 常規(短日期和短時間)

  G 常規(短日期和長時間)

  m、M MonthDayPattern

  r、R RFC1123Pattern

  s 使用當地時間的 SortableDateTimePattern(基於 ISO 8601)

  t ShortTimePattern

  T LongTimePattern

  u UniversalSortableDateTimePattern 用於顯示通用時間的格式

  U 使用通用時間的完整日期和時間(長日期和長時間)

  y、Y YearMonthPattern

  下表列出了可被合併以構造自定義模式的模式

  ========================================

  這些模式是區分大小寫的;例如,識別“MM”,但不識別“mm”。如果自定義模式包含空白字元或用單引號括起來的字元,則輸出字串頁也將包含這些字元。未定義為格式模式的一部分或未定義為格式字元的字元按其原義複製。

  格式模式 說明 :

  d 月中的某一天。一位數的日期沒有前導零。

  dd 月中的某一天。一位數的日期有一個前導零。

  ddd 週中某天的縮寫名稱,在 AbbreviatedDayNames 中定義。

  dddd 週中某天的完整名稱,在 DayNames 中定義。

  M 月份數字。一位數的月份沒有前導零。

  MM 月份數字。一位數的月份有一個前導零。

  MMM 月份的縮寫名稱,在 AbbreviatedMonthNames 中定義。

  MMMM 月份的完整名稱,在 MonthNames 中定義。

  y 不包含紀元的年份。如果不包含紀元的年份小於 10,則顯示不具有前導零的年份。

  yy 不包含紀元的年份。如果不包含紀元的年份小於 10,則顯示具有前導零的年份。

  yyyy 包括紀元的四位數的年份。

  gg 時期或紀元。如果要設定格式的日期不具有關聯的時期或紀元字串,則忽略該模式。

  h 12 小時制的小時。一位數的小時數沒有前導零。

  hh 12 小時制的小時。一位數的小時數有前導零。

  H 24 小時制的小時。一位數的小時數沒有前導零。

  HH 24 小時制的小時。一位數的小時數有前導零。

  m 分鐘。一位數的分鐘數沒有前導零。

  mm 分鐘。一位數的分鐘數有一個前導零。

  s 秒。一位數的秒數沒有前導零。

  ss 秒。一位數的秒數有一個前導零。

  f 秒的小數精度為一位。其餘數字被截斷。

  ff 秒的小數精度為兩位。其餘數字被截斷。

  fff 秒的小數精度為三位。其餘數字被截斷。

  ffff 秒的小數精度為四位。其餘數字被截斷。

  fffff 秒的小數精度為五位。其餘數字被截斷。

  ffffff 秒的小數精度為六位。其餘數字被截斷。

  fffffff 秒的小數精度為七位。其餘數字被截斷。

  t 在 AMDesignator 或 PMDesignator 中定義的 AM/PM 指示項的第一個字元(如果存在)。

  tt 在 AMDesignator 或 PMDesignator 中定義的 AM/PM 指示項(如果存在)。

  z 時區偏移量(“+”或“-”後面僅跟小時)。一位數的小時數沒有前導零。例如,太平洋標準時間是“-8”。

  zz 時區偏移量(“+”或“-”後面僅跟小時)。一位數的小時數有前導零。例如,太平洋標準時間是“-08”。

  zzz 完整時區偏移量(“+”或“-”後面跟有小時和分鐘)。一位數的小時數和分鐘數有前導零。例如,太平洋標準時間是“-08:00”。

  : 在 TimeSeparator 中定義的預設時間分隔符。

  / 在 DateSeparator 中定義的預設日期分隔符。

  % c 其中 c 是格式模式(如果單獨使用)。如果格式模式與原義字元或其他格式模式合併,則可以省略“%”字元。

  \ c 其中 c 是任意字元。照原義顯示字元。若要顯示反斜槓字元,請使用“\\”。

  只有上面第二個表中列出的格式模式才能用於建立自定義模式;在第一個表中列出的標準格式字元不能用於建立自定義模式。自定義模式的長度至少為兩個字元;例如,

  DateTime.ToString( "d") 返回 DateTime 值;“d”是標準短日期模式。

  DateTime.ToString( "%d") 返回月中的某天;“%d”是自定義模式。

  DateTime.ToString( "d ") 返回後面跟有一個空白字元的月中的某天;“d”是自定義模式。

  比較方便的是,上面的引數可以隨意組合,並且不會出錯,多試試,肯定會找到你要的時間格式

  如要得到2005年06月 這樣格式的時間

  可以這樣寫:

以下是引用片段:
date.ToString("yyyy年MM月", DateTimeFormatInfo.InvariantInfo)


  如此類推.

  下面列出一些Asp.net中具體的日期格式化用法:

  ============================================

  1.繫結時格式化日期方法:

   以下是引用片段:
 
  
 


  2.資料控制元件如DataGrid/DataList等的件格式化日期方法:

以下是引用片段:
e.Item.Cell[0].Text = Convert.ToDateTime(e.Item.Cell[0].Text).ToShortDateString();


  3.用String類轉換日期顯示格式:

以下是引用片段:
String.Format( "yyyy-MM-dd ",yourDateTime);


  4.用Convert方法轉換日期顯示格式:

以下是引用片段:
Convert.ToDateTime("2005-8-23").ToString
  ("yyMMdd",System.Globalization.DateTimeFormatInfo.InvariantInfo); //支援繁體資料庫


  5.直接用ToString方法轉換日期顯示格式:

以下是引用片段:
DateTime.Now.ToString("yyyyMMddhhmmss");
  DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")


  6.只顯示年月

以下是引用片段:
DataBinder.Eval(Container.DataItem,"starttime","{0:yyyy-M}")


  7.顯示時間所有部分,包括:年月日時分秒

以下是引用片段:
DataFormatString="{0:yyyy-MM-dd HH24:mm:ss}"> 
 


  [ASP.NET] 如何在GridView中使用DataFromatString

  在我們從業務邏輯層獲得資料實體時候,接下來的事情就是要繫結到控制元件中。資料實體中的一些欄位可以直接繫結到介面中,但是有一些欄位需要重新格式化格式。比如貨幣單位欄位,需要顯示貨幣符號和每隔三位顯示分隔符;再比如日期欄位,資料庫中存放的是日期和時間,但是在介面上需要按照XXXX年XX月XX日的格式顯示。這時候我們就用到了DataFormatString屬性。

以下是引用片段:

    
        
              
        
        
    
 


  例如上面的程式碼展示了日期和貨幣兩種繫結方式。DataFormatString中的{0}是固定的格式,這和String.Fromat(“{0}”, someString)中的{0}是一個用法,表示繫結上下文的引數索引編號。然後,在後面加入格式化字串,具體的使用方法可以參考MSDN。

  這裡需要注意以下幾點

  1. 在GridView中的asp:BoundField使用DataFormatString必須設定屬性HtmlEncode="False",否則不起作用。

  2. 如果需要使用日期型別的格式化字串,必須資料實體中對應的欄位也應該日起型別的。

  3. 格式化字串C代表貨幣單位,需要繫結的資料型別應該是數字型別的。如果是字串型別的不起作用,需要手動新增格式化字串為DataFormatString="¥{0:C}"。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-621001/,如需轉載,請註明出處,否則將追究法律責任。

相關文章