共用方式為


標準日期和時間格式字串

更新:2010 年 7 月

標準日期和時間格式字串使用單一格式規範,定義日期和時間值的文字表示。 任何包含一個以上字元 (包含空白字元 (White Space)) 的日期和時間格式字串都會解譯為自訂日期和時間格式字串。如需詳細資訊,請參閱自訂日期和時間格式字串。 標準或自訂格式字串有兩種使用方式:

  • 定義執行格式化作業後所產生的字串。

  • 定義日期和時間值的文字表示,可藉由剖析作業轉換成 DateTimeDateTimeOffset 值。

標準日期和時間格式字串可以與 DateTimeDateTimeOffset 值搭配使用。

秘訣秘訣

您可以下載格式化公用程式 (英文),這個應用程式可讓您將格式字串套用至數值或日期和時間值,並且顯示結果字串。

下表描述標準日期和時間的格式規範。 除非特別註明,否則特定標準日期和時間格式規範會產生相同的字串表示,無論是與 DateTimeDateTimeOffset 值搭配使用。 如需使用標準日期和時間格式字串的詳細資訊,請參閱注意一節。

格式規範

說明

範例

"d"

簡短日期模式。

詳細資訊:簡短日期 ("d") 格式規範。

6/15/2009 1:45:30 PM -> 6/15/2009 (en-US)

6/15/2009 1:45:30 PM -> 15/06/2009 (fr-FR)

6/15/2009 1:45:30 PM -> 2009/06/15 (ja-JP)

"D"

完整日期模式。

詳細資訊:完整日期 ("D") 格式規範。

6/15/2009 1:45:30 PM -> Monday, June 15, 2009 (en-US)

6/15/2009 1:45:30 PM -> 15 июня 2009 г. (ru-RU)

6/15/2009 1:45:30 PM -> Montag, 15. Juni 2009 (de-DE)

"f"

完整日期/時間模式 (簡短時間)。

詳細資訊:完整日期簡短時間 ("f") 格式規範。

6/15/2009 1:45:30 PM -> Monday, June 15, 2009 1:45 PM (en-US)

6/15/2009 1:45:30 PM -> den 15 juni 2009 13:45 (sv-SE)

6/15/2009 1:45:30 PM -> Δευτέρα, 15 Ιουνίου 2009 1:45 μμ (el-GR)

"F"

完整日期/時間模式 (完整時間)。

詳細資訊:完整日期完整時間 ("F") 格式規範。

6/15/2009 1:45:30 PM -> Monday, June 15, 2009 1:45:30 PM (en-US)

6/15/2009 1:45:30 PM -> den 15 juni 2009 13:45:30 (sv-SE)

6/15/2009 1:45:30 PM -> Δευτέρα, 15 Ιουνίου 2009 1:45:30 μμ (el-GR)

"g"

一般日期/時間模式 (簡短時間)。

詳細資訊:一般日期簡短時間 ("g") 格式規範。

6/15/2009 1:45:30 PM -> 6/15/2009 1:45 PM (en-US)

6/15/2009 1:45:30 PM -> 15/06/2009 13:45 (es-ES)

6/15/2009 1:45:30 PM -> 2009/6/15 13:45 (zh-CN)

"G"

一般日期/時間模式 (完整時間)。

詳細資訊:一般日期完整時間 ("G") 格式規範。

6/15/2009 1:45:30 PM -> 6/15/2009 1:45:30 PM (en-US)

6/15/2009 1:45:30 PM -> 15/06/2009 13:45:30 (es-ES)

6/15/2009 1:45:30 PM -> 2009/6/15 13:45:30 (zh-CN)

"M"、"m"

月/日模式。

詳細資訊:月 ("M"、"m") 格式規範。

6/15/2009 1:45:30 PM -> June 15 (en-US)

6/15/2009 1:45:30 PM -> 15. juni (da-DK)

6/15/2009 1:45:30 PM -> 15 Juni (id-ID)

"O"、"o"

來回日期/時間模式。

詳細資訊:來回 ("O"、"o") 格式規範。

6/15/2009 1:45:30 PM -> 2009-06-15T13:45:30.0900000

"R"、"r"

RFC1123 模式。

詳細資訊:RFC1123 ("R"、"r") 格式規範。

6/15/2009 1:45:30 PM -> Mon, 15 Jun 2009 20:45:30 GMT

"s"

可排序日期/時間模式。

詳細資訊:可排序 ("s") 格式規範。

6/15/2009 1:45:30 PM -> 2009-06-15T13:45:30

"t"

簡短時間模式。

詳細資訊:簡短時間 ("t") 格式規範。

6/15/2009 1:45:30 PM -> 1:45 PM (en-US)

6/15/2009 1:45:30 PM -> 13:45 (hr-HR)

6/15/2009 1:45:30 PM -> 01:45 م (ar-EG)

"T"

完整時間模式。

詳細資訊:完整時間 ("T") 格式規範。

6/15/2009 1:45:30 PM -> 1:45:30 PM (en-US)

6/15/2009 1:45:30 PM -> 13:45:30 (hr-HR)

6/15/2009 1:45:30 PM -> 01:45:30 م (ar-EG)

"u"

國際可排序日期/時間模式。

詳細資訊:國際可排序 ("u") 格式規範。

6/15/2009 1:45:30 PM -> 2009-06-15 20:45:30Z

"U"

國際完整日期/時間模式。

詳細資訊:國際完整 ("U") 格式規範。

6/15/2009 1:45:30 PM -> Monday, June 15, 2009 8:45:30 PM (en-US)

6/15/2009 1:45:30 PM -> den 15 juni 2009 20:45:30 (sv-SE)

6/15/2009 1:45:30 PM -> Δευτέρα, 15 Ιουνίου 2009 8:45:30 μμ (el-GR)

"Y", "y"

年月模式。

詳細資訊:年月 ("Y") 格式規範。

6/15/2009 1:45:30 PM -> June, 2009 (en-US)

6/15/2009 1:45:30 PM -> juni 2009 (da-DK)

6/15/2009 1:45:30 PM -> Juni 2009 (id-ID)

任何其他單一字元

未知的規範。

擲回執行階段 FormatException

標準格式字串的運作方式

在格式化作業中,標準格式字串只是自訂格式字串的別名。 使用別名來表示自訂格式字串的好處是,儘管別名保持不變,自訂格式字串本身則可有變化。 這點非常重要,因為日期和時間值的字串表示通常會因文化特性 (Culture) 而不同。 例如,"d" 標準格式字串表示日期和時間值將使用簡短日期模式顯示。 在不因文化特性而異 (Invariant Culture) 的情況下,此模式為 "MM/dd/yyyy"。 若為 fr-FR 文化特性,則是 "dd/MM/yyyy"。 若為 ja-JP 文化特性,則是 "yyyy/MM/dd"。

如果格式化作業中的標準格式字串對應至特定文化特性的自訂格式字串,您的應用程式可以定義特定文化特性,以下列其中一種方式使用自訂格式字串:

  • 您可以使用預設 (或目前的) 文化特性。 下列範例顯示的日期使用了目前文化特性的簡短日期格式。 在此例中,目前的文化特性是 en-US。

    ' Display using current (en-us) culture's short date format
    Dim thisDate As Date = #03/15/2008#
    Console.WriteLine(thisDate.ToString("d"))     ' Displays 3/15/2008
    
    // Display using current (en-us) culture's short date format
    DateTime thisDate = new DateTime(2008, 3, 15);
    Console.WriteLine(thisDate.ToString("d"));           // Displays 3/15/2008
    
  • 您可以將表示要用來進行格式化之文化特性的 CultureInfo 物件傳遞至具有 IFormatProvider 參數的方法。 下列範例顯示的日期使用了 pt-BR 文化特性的簡短日期格式。

    ' Display using pt-BR culture's short date format
    Dim thisDate As Date = #03/15/2008#
    Dim culture As New CultureInfo("pt-BR")      
    Console.WriteLine(thisDate.ToString("d", culture))   ' Displays 15/3/2008
    
    // Display using pt-BR culture's short date format
    DateTime thisDate = new DateTime(2008, 3, 15);
    CultureInfo culture = new CultureInfo("pt-BR");      
    Console.WriteLine(thisDate.ToString("d", culture));  // Displays 15/3/2008
    
  • 您可以將提供格式化資訊的 DateTimeFormatInfo 物件傳遞至具有 IFormatProvider 參數的方法。 下列範例顯示的日期使用了取自於 hr-HR 文化特性之 DateTimeFormatInfo 物件的簡短日期格式。

    ' Display using date format information from hr-HR culture
    Dim thisDate As Date = #03/15/2008#
    Dim fmt As DateTimeFormatInfo = (New CultureInfo("hr-HR")).DateTimeFormat
    Console.WriteLine(thisDate.ToString("d", fmt))   ' Displays 15.3.2008
    
    // Display using date format information from hr-HR culture
    DateTime thisDate = new DateTime(2008, 3, 15);
    DateTimeFormatInfo fmt = (new CultureInfo("hr-HR")).DateTimeFormat;
    Console.WriteLine(thisDate.ToString("d", fmt));      // Displays 15.3.2008
    

在某些情況下,標準格式字串可做為不變之長自訂格式字串的簡便縮寫。 有四個標準格式字串屬於此分類:"O" (或 "o")、"R" (或 "r")、"s" 和 "u"。 這些字串相當於不因文化特性而異所定義的自訂格式字串。 它們針對日期和時間值所產生的字串表示在各文化特性中都相同。 下表提供這四種標準日期和時間格式字串的相關資訊。

標準格式字串

由 DateTimeFormatInfo.InvariantInfo 屬性定義

自訂格式字串

"O" 或 "o"

yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzz

"R" 或 "r"

RFC1123Pattern

ddd、dd MMM yyyy HH':'mm':'ss 'GMT'

"s"

SortableDateTimePattern

yyyy'-'MM'-'dd'T'HH':'mm':'ss

"u"

UniversalSortableDateTimePattern

yyyy'-'MM'-'dd HH':'mm':'ss'Z'

標準格式字串也可以在剖析作業中搭配 DateTime.ParseExactDateTimeOffset.ParseExact 方法使用,這些方法都需要輸入字串完全符合特定模式,剖析作業才會成功。 許多標準格式字串都對應至多個自訂格式字串,因此日期和時間值可以用各種不同的格式表示,而剖析作業仍然會成功。 您可以藉由呼叫 DateTimeFormatInfo.GetAllDateTimePatterns(Char) 方法判斷對應至標準格式字串的自訂格式字串。 下列範例會顯示對應至 "d" (簡短日期模式) 標準格式字串的自訂格式字串。

Imports System.Globalization

Module Example
   Public Sub Main()
      Console.WriteLine("'d' standard format string:")
      For Each customString In DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns("d"c)
          Console.WriteLine("   {0}", customString)
      Next                                  
   End Sub
End Module
' The example displays the following output:
'    'd' standard format string:
'       M/d/yyyy
'       M/d/yy
'       MM/dd/yy
'       MM/dd/yyyy
'       yy/MM/dd
'       yyyy-MM-dd
'       dd-MMM-yy
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      Console.WriteLine("'d' standard format string:");
      foreach (var customString in DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns('d'))
          Console.WriteLine("   {0}", customString);
   }
}
// The example displays the following output:
//       'd' standard format string:
//          M/d/yyyy
//          M/d/yy
//          MM/dd/yy
//          MM/dd/yyyy
//          yy/MM/dd
//          yyyy-MM-dd
//          dd-MMM-yy

下列各節描述 DateTimeDateTimeOffset 值的標準格式規範。

簡短日期 ("d") 格式規範

"d" 標準格式規範表示由特定文化特性之 DateTimeFormatInfo.ShortDatePattern 屬性所定義的自訂日期和時間格式字串。 例如,不因文化特性而異的 ShortDatePattern 屬性傳回的自訂格式字串為 "MM/dd/yyyy"。

下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。

屬性

說明

ShortDatePattern

定義結果字串的整體格式。

DateSeparator

定義分隔日期之年份、月份和日期元件的字串。

下列範例使用 "d" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008#
Console.WriteLine(date1.ToString("d", DateTimeFormatInfo.InvariantInfo))
' Displays 04/10/2008
Console.WriteLine(date1.ToString("d", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays 4/10/2008                       
Console.WriteLine(date1.ToString("d", _
                  CultureInfo.CreateSpecificCulture("en-NZ")))
' Displays 10/04/2008                       
Console.WriteLine(date1.ToString("d", _
                  CultureInfo.CreateSpecificCulture("de-DE")))
' Displays 10.04.2008                       
DateTime date1 = new DateTime(2008,4, 10);
Console.WriteLine(date1.ToString("d", DateTimeFormatInfo.InvariantInfo));
// Displays 04/10/2008
Console.WriteLine(date1.ToString("d", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays 4/10/2008                       
Console.WriteLine(date1.ToString("d", 
                  CultureInfo.CreateSpecificCulture("en-NZ")));
// Displays 10/04/2008                       
Console.WriteLine(date1.ToString("d", 
                  CultureInfo.CreateSpecificCulture("de-DE")));
// Displays 10.04.2008                       

回到表格

完整日期 ("D") 格式規範

"D" 標準格式規範表示由目前 DateTimeFormatInfo.LongDatePattern 屬性所定義的自訂日期和時間格式字串。 例如,不因文化特性而異的自訂格式字串為 "dddd, dd MMMM yyyy"。

下表列出 DateTimeFormatInfo 物件的屬性,這些屬性控制傳回之字串的格式設定。

屬性

說明

LongDatePattern

定義結果字串的整體格式。

DayNames

定義可顯示在結果字串中的當地語系化日期名稱。

MonthNames

定義可顯示在結果字串中的當地語系化月份名稱。

下列範例使用 "D" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008#
Console.WriteLine(date1.ToString("D", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008                        
Console.WriteLine(date1.ToString("D", _
                  CultureInfo.CreateSpecificCulture("pt-BR")))
' Displays quinta-feira, 10 de abril de 2008                        
Console.WriteLine(date1.ToString("D", _
                  CultureInfo.CreateSpecificCulture("es-MX")))
' Displays jueves, 10 de abril de 2008                        
DateTime date1 = new DateTime(2008, 4, 10);
Console.WriteLine(date1.ToString("D", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008                        
Console.WriteLine(date1.ToString("D", 
                  CultureInfo.CreateSpecificCulture("pt-BR")));
// Displays quinta-feira, 10 de abril de 2008                        
Console.WriteLine(date1.ToString("D", 
                  CultureInfo.CreateSpecificCulture("es-MX")));
// Displays jueves, 10 de abril de 2008                        

回到表格

完整日期簡短時間 ("f") 格式規範

"f" 標準格式規範表示完整日期 ("D") 和簡短時間 ("t") 模式的組合,以空格分隔。

結果字串會受到特定 DateTimeFormatInfo 物件的格式設定資訊所影響。 下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。 由某些文化特性的 DateTimeFormatInfo.LongDatePatternDateTimeFormatInfo.ShortTimePattern 屬性所傳回的自訂格式規範,可能不會使用所有屬性。

屬性

說明

LongDatePattern

定義結果字串之日期元件的格式。

ShortTimePattern

定義結果字串之時間元件的格式。

DayNames

定義可顯示在結果字串中的當地語系化日期名稱。

MonthNames

定義可顯示在結果字串中的當地語系化月份名稱。

TimeSeparator

定義分隔時間之小時、分鐘和秒鐘元件的字串。

AMDesignator

定義表示從午夜到中午之前時間 (12 小時制) 的字串。

PMDesignator

定義表示從中午到午夜之前時間 (12 小時制) 的字串。

下列範例使用 "f" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("f", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008 6:30 AM                        
Console.WriteLine(date1.ToString("f", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays jeudi 10 avril 2008 06:30                       
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("f", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008 6:30 AM                        
Console.WriteLine(date1.ToString("f", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays jeudi 10 avril 2008 06:30                       

回到表格

完整日期完整時間 ("F") 格式規範

"F" 標準格式規範表示由目前 DateTimeFormatInfo.FullDateTimePattern 屬性所定義的自訂日期和時間格式字串。 例如,不因文化特性而異的自訂格式字串為 "dddd, dd MMMM yyyy HH:mm:ss"。

下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。 由某些文化特性的 FullDateTimePattern 屬性所傳回的自訂格式規範,可能不會使用所有屬性。

屬性

說明

FullDateTimePattern

定義結果字串的整體格式。

DayNames

定義可顯示在結果字串中的當地語系化日期名稱。

MonthNames

定義可顯示在結果字串中的當地語系化月份名稱。

TimeSeparator

定義分隔時間之小時、分鐘和秒鐘元件的字串。

AMDesignator

定義表示從午夜到中午之前時間 (12 小時制) 的字串。

PMDesignator

定義表示從中午到午夜之前時間 (12 小時制) 的字串。

下列範例使用 "F" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("F", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008 6:30:00 AM                        
Console.WriteLine(date1.ToString("F", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays jeudi 10 avril 2008 06:30:00                       
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("F", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008 6:30:00 AM                        
Console.WriteLine(date1.ToString("F", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays jeudi 10 avril 2008 06:30:00                       

回到表格

一般日期簡短時間 ("g") 格式規範

"g" 標準格式規範表示簡短日期 ("d") 和簡短時間 ("t") 模式的組合,以空格分隔。

結果字串會受到特定 DateTimeFormatInfo 物件的格式設定資訊所影響。 下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。 由某些文化特性的 DateTimeFormatInfo.ShortDatePatternDateTimeFormatInfo.ShortTimePattern 屬性所傳回的自訂格式規範,可能不會使用所有屬性。

屬性

說明

ShortDatePattern

定義結果字串之日期元件的格式。

ShortTimePattern

定義結果字串之時間元件的格式。

DateSeparator

定義分隔日期之年份、月份和日期元件的字串。

TimeSeparator

定義分隔時間之小時、分鐘和秒鐘元件的字串。

AMDesignator

定義表示從午夜到中午之前時間 (12 小時制) 的字串。

PMDesignator

定義表示從中午到午夜之前時間 (12 小時制) 的字串。

下列範例使用 "g" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("g", _
                  DateTimeFormatInfo.InvariantInfo))
' Displays 04/10/2008 06:30                      
Console.WriteLine(date1.ToString("g", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays 4/10/2008 6:30 AM                       
Console.WriteLine(date1.ToString("g", _
                  CultureInfo.CreateSpecificCulture("fr-BE")))
' Displays 10/04/2008 6:30                        
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("g", 
                  DateTimeFormatInfo.InvariantInfo));
// Displays 04/10/2008 06:30                      
Console.WriteLine(date1.ToString("g", 
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays 4/10/2008 6:30 AM                       
Console.WriteLine(date1.ToString("g", 
                  CultureInfo.CreateSpecificCulture("fr-BE")));
// Displays 10/04/2008 6:30                        

回到表格

一般日期完整時間 ("G") 格式規範

"G" 標準格式規範表示簡短日期 ("d") 和完整時間 ("T") 模式的組合,以空格分隔。

結果字串會受到特定 DateTimeFormatInfo 物件的格式設定資訊所影響。 下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。 由某些文化特性的 DateTimeFormatInfo.ShortDatePatternDateTimeFormatInfo.LongTimePattern 屬性所傳回的自訂格式規範,可能不會使用所有屬性。

屬性

說明

ShortDatePattern

定義結果字串之日期元件的格式。

LongTimePattern

定義結果字串之時間元件的格式。

DateSeparator

定義分隔日期之年份、月份和日期元件的字串。

TimeSeparator

定義分隔時間之小時、分鐘和秒鐘元件的字串。

AMDesignator

定義表示從午夜到中午之前時間 (12 小時制) 的字串。

PMDesignator

定義表示從中午到午夜之前時間 (12 小時制) 的字串。

下列範例使用 "G" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("G", _
                  DateTimeFormatInfo.InvariantInfo))
' Displays 04/10/2008 06:30:00
Console.WriteLine(date1.ToString("G", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays 4/10/2008 6:30:00 AM                        
Console.WriteLine(date1.ToString("G", _
                  CultureInfo.CreateSpecificCulture("nl-BE")))
' Displays 10/04/2008 6:30:00                       
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("G", 
                  DateTimeFormatInfo.InvariantInfo));
// Displays 04/10/2008 06:30:00
Console.WriteLine(date1.ToString("G", 
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays 4/10/2008 6:30:00 AM                        
Console.WriteLine(date1.ToString("G", 
                  CultureInfo.CreateSpecificCulture("nl-BE")));
// Displays 10/04/2008 6:30:00                       

回到表格

月 ("M"、"m") 格式規範

"M" 或 "m" 標準格式規範表示由目前 DateTimeFormatInfo.MonthDayPattern 屬性所定義的自訂日期和時間格式字串。 例如,不因文化特性而異的自訂格式字串為 "MMMM dd"。

下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。

屬性

說明

MonthDayPattern

定義結果字串的整體格式。

MonthNames

定義可顯示在結果字串中的當地語系化月份名稱。

下列範例使用 "m" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("m", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays April 10                        
Console.WriteLine(date1.ToString("m", _
                  CultureInfo.CreateSpecificCulture("ms-MY")))
' Displays 10 April                       
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("m", 
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays April 10                        
Console.WriteLine(date1.ToString("m", 
                  CultureInfo.CreateSpecificCulture("ms-MY")));
// Displays 10 April                       

回到表格

來回 ("O"、"o") 格式規範

"O" 或 "o" 標準格式規範表示使用保存時區資訊之模式的自訂日期和時間格式字串。 若為 DateTime 值,此格式規範是設計來以純文字保存日期和時間值以及 DateTime.Kind 屬性。 如果將 DateTime.Parse(String, IFormatProvider, DateTimeStyles)DateTime.ParseExact 方法的 styles 參數設定為 DateTimeStyles.RoundtripKind,則可以使用這兩個方法來剖析還原格式化字串。

"O" 或 "o" 標準格式規範對應至 DateTime 值的 "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" 自訂格式字串,也對應至 DateTimeOffset 值的 "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz" 自訂格式字串。 在此字串中,分隔個別字元 (例如連字號、冒號和字母 "T") 的各組單引號表示個別字元為不可變更的常值。 所有格符號不會出現在輸出字串中。

這個規範的模式反映的是一個已定義的標準 (ISO 8601)。 因此,不論所使用的文化特性或提供的格式提供者為何,它一定會是相同的。 傳遞至 ParseParseExact 方法的字串必須完全符合此自訂格式模式,否則就會擲回 FormatException

使用這個標準格式規範時,格式或剖析作業一律使用不因文化特性而異。

下列範例使用 "o" 格式規範,在系統上顯示 DateTimeDateTimeOffset 值,這個系統位於美國 太平洋時區。

Dim date1 As Date = #4/10/2008 6:30AM#
Dim dateOffset As New DateTimeOffset(date1, TimeZoneInfo.Local.GetUtcOFfset(date1))
Console.WriteLine(date1.ToString("o"))
' Displays 2008-04-10T06:30:00.0000000                        
Console.WriteLine(dateOffset.ToString("o"))
' Displays 2008-04-10T06:30:00.0000000-07:00                       
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1, 
                            TimeZoneInfo.Local.GetUtcOffset(date1));
Console.WriteLine(date1.ToString("o"));
// Displays 2008-04-10T06:30:00.0000000                        
Console.WriteLine(dateOffset.ToString("o"));
// Displays 2008-04-10T06:30:00.0000000-07:00                       

下列範例使用 "o" 格式規範建立格式化字串,然後呼叫日期和時間 Parse 方法來還原原始日期和時間值。

' Round-trip DateTime values.
Dim originalDate, newDate As Date
Dim dateString As String
' Round-trip a local time.
originalDate = Date.SpecifyKind(#4/10/2008 6:30AM#, DateTimeKind.Local)
dateString = originalDate.ToString("o")
newDate = Date.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, _
                  newDate, newDate.Kind)
' Round-trip a UTC time.
originalDate = Date.SpecifyKind(#4/12/2008 9:30AM#, DateTimeKind.Utc)                  
dateString = originalDate.ToString("o")
newDate = Date.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, _
                  newDate, newDate.Kind)
' Round-trip time in an unspecified time zone.
originalDate = Date.SpecifyKind(#4/13/2008 12:30PM#, DateTimeKind.Unspecified)                  
dateString = originalDate.ToString("o")
newDate = Date.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, _
                  newDate, newDate.Kind)

' Round-trip a DateTimeOffset value.
Dim originalDTO As New DateTimeOffset(#4/12/2008 9:30AM#, New TimeSpan(-8, 0, 0))
dateString = originalDTO.ToString("o")
Dim newDTO As DateTimeOffset = DateTimeOffset.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} to {1}.", originalDTO, newDTO)
' The example displays the following output:
'    Round-tripped 4/10/2008 6:30:00 AM Local to 4/10/2008 6:30:00 AM Local.
'    Round-tripped 4/12/2008 9:30:00 AM Utc to 4/12/2008 9:30:00 AM Utc.
'    Round-tripped 4/13/2008 12:30:00 PM Unspecified to 4/13/2008 12:30:00 PM Unspecified.
'    Round-tripped 4/12/2008 9:30:00 AM -08:00 to 4/12/2008 9:30:00 AM -08:00.
// Round-trip DateTime values.
DateTime originalDate, newDate;
string dateString;
// Round-trip a local time.
originalDate = DateTime.SpecifyKind(new DateTime(2008, 4, 10, 6, 30, 0), DateTimeKind.Local);
dateString = originalDate.ToString("o");
newDate = DateTime.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, 
                  newDate, newDate.Kind);
// Round-trip a UTC time.
originalDate = DateTime.SpecifyKind(new DateTime(2008, 4, 12, 9, 30, 0), DateTimeKind.Utc);                  
dateString = originalDate.ToString("o");
newDate = DateTime.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, 
                  newDate, newDate.Kind);
// Round-trip time in an unspecified time zone.
originalDate = DateTime.SpecifyKind(new DateTime(2008, 4, 13, 12, 30, 0), DateTimeKind.Unspecified);                  
dateString = originalDate.ToString("o");
newDate = DateTime.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, 
                  newDate, newDate.Kind);

// Round-trip a DateTimeOffset value.
DateTimeOffset originalDTO = new DateTimeOffset(2008, 4, 12, 9, 30, 0, new TimeSpan(-8, 0, 0));
dateString = originalDTO.ToString("o");
DateTimeOffset newDTO = DateTimeOffset.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} to {1}.", originalDTO, newDTO);
// The example displays the following output:
//    Round-tripped 4/10/2008 6:30:00 AM Local to 4/10/2008 6:30:00 AM Local.
//    Round-tripped 4/12/2008 9:30:00 AM Utc to 4/12/2008 9:30:00 AM Utc.
//    Round-tripped 4/13/2008 12:30:00 PM Unspecified to 4/13/2008 12:30:00 PM Unspecified.
//    Round-tripped 4/12/2008 9:30:00 AM -08:00 to 4/12/2008 9:30:00 AM -08:00.

回到表格

RFC1123 ("R"、"r") 格式規範

"R" 或 "r" 標準格式規範表示由 DateTimeFormatInfo.RFC1123Pattern 屬性所定義的自訂日期和時間格式字串。 此模式反映已定義的標準,且屬性為唯讀。 因此,不論所使用的文化特性或提供的格式提供者為何,它一定會是相同的。 自訂格式字串為 "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'"。 使用這個標準格式規範時,格式或剖析作業一律使用不因文化特性而異。

在表示不因文化特性而異之 DateTimeFormatInfo.InvariantInfo 屬性所傳回的 DateTimeFormatInfo 物件中,有下列屬性會影響結果字串。

屬性

說明

RFC1123Pattern

定義結果字串的格式。

AbbreviatedDayNames

定義可顯示在結果字串中的縮寫日期名稱。

AbbreviatedMonthNames

定義可顯示在結果字串中的縮寫月份名稱。

雖然 RFC 1123 標準以國際標準時間 (UTC) 來表示時間,但對於正在格式化的 DateTimeDateTimeOffset 物件,格式化作業並不會修改這些物件的值。 因此,應用程式在執行格式化作業之前,必須先將日期和時間值轉換為 UTC。 為了執行這項轉換,DateTime 值可以呼叫 DateTime.ToUniversalTime 方法,而 DateTimeOffset 值可以呼叫 ToUniversalTime 方法。

下列範例使用 "r" 格式規範,在系統上顯示 DateTimeDateTimeOffset 值,這個系統位於美國 太平洋時區。

Dim date1 As Date = #4/10/2008 6:30AM#
Dim dateOffset As New DateTimeOffset(date1, TimeZoneInfo.Local.GetUtcOFfset(date1))
Console.WriteLine(date1.ToUniversalTime.ToString("r"))
' Displays Thu, 10 Apr 2008 13:30:00 GMT                       
Console.WriteLine(dateOffset.ToUniversalTime.ToString("r"))
' Displays Thu, 10 Apr 2008 13:30:00 GMT                        
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1, 
                            TimeZoneInfo.Local.GetUtcOffset(date1));
Console.WriteLine(date1.ToUniversalTime().ToString("r"));
// Displays Thu, 10 Apr 2008 13:30:00 GMT                       
Console.WriteLine(dateOffset.ToUniversalTime().ToString("r"));
// Displays Thu, 10 Apr 2008 13:30:00 GMT                        

回到表格

可排序 ("s") 格式規範

"s" 標準格式規範表示由 DateTimeFormatInfo.SortableDateTimePattern 屬性所定義的自訂日期和時間格式字串。 此模式反映已定義的標準 (ISO 8601),且屬性為唯讀。 因此,不論所使用的文化特性或提供的格式提供者為何,它一定會是相同的。 自訂格式字串為 "yyyy'-'MM'-'dd'T'HH':'mm':'ss"。

使用這個標準格式規範時,格式或剖析作業一律使用不因文化特性而異。

下列範例使用 "s" 格式規範,在系統上顯示 DateTimeDateTimeOffset 值,這個系統位於美國 太平洋時區。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("s"))
' Displays 2008-04-10T06:30:00                       
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("s"));
// Displays 2008-04-10T06:30:00                       

回到表格

簡短時間 ("t") 格式規範

"t" 標準格式規範表示由目前 DateTimeFormatInfo.ShortTimePattern 屬性所定義的自訂日期和時間格式字串。 例如,不因文化特性而異的自訂格式字串為 "HH:mm"。

結果字串會受到特定 DateTimeFormatInfo 物件的格式設定資訊所影響。 下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。 由某些文化特性的 DateTimeFormatInfo.ShortTimePattern 屬性所傳回的自訂格式規範,可能不會使用所有屬性。

屬性

說明

ShortTimePattern

定義結果字串之時間元件的格式。

TimeSeparator

定義分隔時間之小時、分鐘和秒鐘元件的字串。

AMDesignator

定義表示從午夜到中午之前時間 (12 小時制) 的字串。

PMDesignator

定義表示從中午到午夜之前時間 (12 小時制) 的字串。

下列範例使用 "t" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("t", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays 6:30 AM                        
Console.WriteLine(date1.ToString("t", _
                  CultureInfo.CreateSpecificCulture("es-ES")))
' Displays 6:30                      
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("t", 
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays 6:30 AM                        
Console.WriteLine(date1.ToString("t", 
                  CultureInfo.CreateSpecificCulture("es-ES")));
// Displays 6:30                      

回到表格

完整時間 ("T") 格式規範

"T" 標準格式規範表示由特定文化特性之 DateTimeFormatInfo.LongTimePattern 屬性所定義的自訂日期和時間格式字串。 例如,不因文化特性而異的自訂格式字串為 "HH:mm:ss"。

下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。 由某些文化特性的 DateTimeFormatInfo.LongTimePattern 屬性所傳回的自訂格式規範,可能不會使用所有屬性。

屬性

說明

LongTimePattern

定義結果字串之時間元件的格式。

TimeSeparator

定義分隔時間之小時、分鐘和秒鐘元件的字串。

AMDesignator

定義表示從午夜到中午之前時間 (12 小時制) 的字串。

PMDesignator

定義表示從中午到午夜之前時間 (12 小時制) 的字串。

下列範例使用 "T" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("T", _
                  CultureInfo.CreateSpecificCulture("en-us")))
' Displays 6:30:00 AM                       
Console.WriteLine(date1.ToString("T", _
                  CultureInfo.CreateSpecificCulture("es-ES")))
' Displays 6:30:00                      
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("T", 
                  CultureInfo.CreateSpecificCulture("en-us")));
// Displays 6:30:00 AM                       
Console.WriteLine(date1.ToString("T", 
                  CultureInfo.CreateSpecificCulture("es-ES")));
// Displays 6:30:00                      

回到表格

國際可排序 ("u") 格式規範

"u" 標準格式規範表示由 DateTimeFormatInfo.UniversalSortableDateTimePattern 屬性所定義的自訂日期和時間格式字串。 此模式反映已定義的標準,且屬性為唯讀。 因此,不論所使用的文化特性或提供的格式提供者為何,它一定會是相同的。 自訂格式字串為 "yyyy'-'MM'-'dd HH':'mm':'ss'Z'"。 使用這個標準格式規範時,格式或剖析作業一律使用不因文化特性而異。

雖然結果字串應該以國際標準時間 (UTC) 來表示時間,但在格式化作業期間,原始 DateTimeDateTimeOffset 值不會執行任何轉換。 因此,應用程式在格式化日期和時間值之前,必須先將日期和時間值轉換為 UTC。 為了執行這項轉換,DateTime 值可以呼叫 DateTime.ToUniversalTime 方法,而 DateTimeOffset 值可以呼叫 ToUniversalTime 方法。

下列範例使用 "u" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToUniversalTime.ToString("u"))
' Displays 2008-04-10 13:30:00Z                       
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToUniversalTime().ToString("u"));
// Displays 2008-04-10 13:30:00Z                       

回到表格

國際完整 ("U") 格式規範

"U" 標準格式規範表示由指定文化特性之 DateTimeFormatInfo.FullDateTimePattern 屬性所定義的自訂日期和時間格式字串。 此模式與 "F" 模式相同。 不過,DateTime 值在格式化之前會自動轉換為 UTC。

下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。 由某些文化特性的 FullDateTimePattern 屬性所傳回的自訂格式規範,可能不會使用所有屬性。

屬性

說明

FullDateTimePattern

定義結果字串的整體格式。

DayNames

定義可顯示在結果字串中的當地語系化日期名稱。

MonthNames

定義可顯示在結果字串中的當地語系化月份名稱。

TimeSeparator

定義分隔時間之小時、分鐘和秒鐘元件的字串。

AMDesignator

定義表示從午夜到中午之前時間 (12 小時制) 的字串。

PMDesignator

定義表示從中午到午夜之前時間 (12 小時制) 的字串。

DateTimeOffset 型別不支援 "U" 格式規範,如果使用它來格式化 DateTimeOffset 值,則會擲回 FormatException

下列範例使用 "U" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("U", CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008 1:30:00 PM                       
Console.WriteLine(date1.ToString("U", CultureInfo.CreateSpecificCulture("sv-FI")))
' Displays den 10 april 2008 13:30:00                       
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("U", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008 1:30:00 PM                       
Console.WriteLine(date1.ToString("U", 
                  CultureInfo.CreateSpecificCulture("sv-FI")));
// Displays den 10 april 2008 13:30:00                       

回到表格

年月 ("Y"、"y") 格式規範

"Y" 或 "y" 標準格式規範表示由指定文化特性之 DateTimeFormatInfo.YearMonthPattern 屬性所定義的自訂日期和時間格式字串。 例如,不因文化特性而異的自訂格式字串為 "yyyy MMMM"。

下表列出可控制傳回字串之格式設定的 DateTimeFormatInfo 物件屬性。

屬性

說明

YearMonthPattern

定義結果字串的整體格式。

MonthNames

定義可顯示在結果字串中的當地語系化月份名稱。

下列範例使用 "y" 格式規範來顯示日期和時間值。

Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("Y", CultureInfo.CreateSpecificCulture("en-US")))
' Displays April, 2008                       
Console.WriteLine(date1.ToString("y", CultureInfo.CreateSpecificCulture("af-ZA")))
' Displays April 2008                       
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("Y", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays April, 2008                       
Console.WriteLine(date1.ToString("y", 
                  CultureInfo.CreateSpecificCulture("af-ZA")));
// Displays April 2008                       

回到表格

備註

控制台設定值

[控制台] 中 [地區及語言選項] 項目的設定會影響格式化作業所產生的結果字串。 這些設定是用來初始化與目前執行緒文化特性相關的 DateTimeFormatInfo 物件,該物件會提供用來管理格式的值。 使用不同設定的電腦會產生不同的結果字串。

此外,如果您使用 CultureInfo.CultureInfo(String) 建構函式來執行個體化新的 CultureInfo 物件,而此物件代表的文化特性與目前系統文化特性相同,則 [控制台] 中的 [地區及語言選項] 項目所建立的任何自訂都會套用至新的 CultureInfo 物件。 您可以使用 CultureInfo.CultureInfo(String, Boolean) 建構函式來建立不反映系統自訂的 CultureInfo 物件。

DateTimeFormatInfo 屬性

格式會受到目前 DateTimeFormatInfo 物件的影響,而此物件是由目前執行緒文化特性隱含提供或由叫用格式之方法的 IFormatProvider 參數明確提供。 針對 IFormatProvider 參數,您的應用程式應指定代表文化特性的 CultureInfo 物件,或是指定代表特定文化特性之日期和時間格式化慣例的 DateTimeFormatInfo 物件。 許多標準日期和時間格式規範都是格式化模式的別名,這些模式是由目前 DateTimeFormatInfo 物件的屬性所定義。 您的應用程式可以變更對應 DateTimeFormatInfo 屬性的對應日期和時間格式模式,藉此改變某些標準日期和時間格式規範所產生的結果。

請參閱

概念

格式化型別

自訂日期和時間格式字串

變更記錄

日期

記錄

原因

2010 年 7 月

已加入剖析作業中標準格式字串的相關資訊。

客戶回函。

2011 年 3 月

已加入格式化公用程式的連結。

資訊加強。