自訂日期和時間格式字串

日期和時間格式字串會定義對 DateTimeDateTimeOffset 值執行格式化作業後所產生的文字表示。 另外還會定義剖析作業所需日期和時間值的表示,以便成功地將字串轉換成日期和時間。 自訂格式字串是由一個或多個自訂日期和時間格式規範所組成。 任何不是標準日期和時間格式字串的字串都會被解譯為自訂日期和時間格式字串。

提示

您可以下載格式化公用程式,這個 .NET Core Windows Forms 應用程式可讓您將格式字串套用至數值或日期和時間值,並顯示結果字串。 提供 C#Visual Basic 的原始程式碼。

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

注意

本文中的某些 C# 範例會在 Try.NET 內嵌程式碼執行器和測試區執行。 選取 [執行] 按鈕以在互動式視窗中執行範例。 執行程式碼之後,您便可以修改它,並再選取一次 [執行] 來執行修改過的程式碼。 修改過的程式碼會在互動式視窗中執行,或是如果編譯失敗的話,互動式視窗會顯示所有 C# 編譯器錯誤訊息。

Try.NET 內嵌程式碼執行器與 Playground 的當地時區是全球標準時間 (UTC)。 這可能會影響示範 DateTimeDateTimeOffsetTimeZoneInfo 型別與其成員之範例的行為與輸出。

在格式化作業中,自訂日期和時間格式字串可以搭配日期和時間執行個體的 ToString 方法或是支援複合格式的方法使用。 以下範例說明這兩種用法。

DateTime thisDate1 = new DateTime(2011, 6, 10);
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");

DateTimeOffset thisDate2 = new DateTimeOffset(2011, 6, 10, 15, 24, 16,
                                              TimeSpan.Zero);
Console.WriteLine("The current date and time: {0:MM/dd/yy H:mm:ss zzz}",
                   thisDate2);
// The example displays the following output:
//    Today is June 10, 2011.
//    The current date and time: 06/10/11 15:24:16 +00:00
Dim thisDate1 As Date = #6/10/2011#
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".")

Dim thisDate2 As New DateTimeOffset(2011, 6, 10, 15, 24, 16, TimeSpan.Zero)
Console.WriteLine("The current date and time: {0:MM/dd/yy H:mm:ss zzz}",
                  thisDate2)
' The example displays the following output:
'    Today is June 10, 2011.
'    The current date and time: 06/10/11 15:24:16 +00:00

在剖析作業中,自訂日期和時間格式字串可以搭配 DateTime.ParseExactDateTime.TryParseExactDateTimeOffset.ParseExactDateTimeOffset.TryParseExact 方法使用。 這些方法需要輸入字串完全符合特定模式,剖析作業才會成功。 下列範例說明呼叫 DateTimeOffset.ParseExact(String, String, IFormatProvider) 方法來剖析必須包含日、月和兩位數年的日期。

using System;
using System.Globalization;

public class Example1
{
    public static void Main()
    {
        string[] dateValues = { "30-12-2011", "12-30-2011",
                              "30-12-11", "12-30-11" };
        string pattern = "MM-dd-yy";
        DateTime parsedDate;

        foreach (var dateValue in dateValues)
        {
            if (DateTime.TryParseExact(dateValue, pattern, null,
                                      DateTimeStyles.None, out parsedDate))
                Console.WriteLine("Converted '{0}' to {1:d}.",
                                  dateValue, parsedDate);
            else
                Console.WriteLine("Unable to convert '{0}' to a date and time.",
                                  dateValue);
        }
    }
}
// The example displays the following output:
//    Unable to convert '30-12-2011' to a date and time.
//    Unable to convert '12-30-2011' to a date and time.
//    Unable to convert '30-12-11' to a date and time.
//    Converted '12-30-11' to 12/30/2011.
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim dateValues() As String = {"30-12-2011", "12-30-2011",
                                        "30-12-11", "12-30-11"}
        Dim pattern As String = "MM-dd-yy"
        Dim parsedDate As Date

        For Each dateValue As String In dateValues
            If DateTime.TryParseExact(dateValue, pattern, Nothing,
                                      DateTimeStyles.None, parsedDate) Then
                Console.WriteLine("Converted '{0}' to {1:d}.",
                                  dateValue, parsedDate)
            Else
                Console.WriteLine("Unable to convert '{0}' to a date and time.",
                                  dateValue)
            End If
        Next
    End Sub
End Module
' The example displays the following output:
'    Unable to convert '30-12-2011' to a date and time.
'    Unable to convert '12-30-2011' to a date and time.
'    Unable to convert '30-12-11' to a date and time.
'    Converted '12-30-11' to 12/30/2011.

下表描述自定義日期和時間格式規範,並顯示每個格式規範所產生的結果字串。 根據預設,結果字串會反映 en-US 文化特性的格式設定慣例。 如果特定格式規範會產生當地語系化的結果字串,則範例也會註明結果字串適用的文化特性。 如需使用自訂日期和時間格式字串的詳細資訊,請參閱注意一節。

格式規範 描述 範例
"d" 當月的日期,從 1 到 31。

詳細資訊:"d" 自訂格式規範
2009-06-01T13:45:30 -> 1

2009-06-15T13:45:30 -> 15
"dd" 當月的日期,從 01 到 31。

詳細資訊:"dd" 自訂格式規範
2009-06-01T13:45:30 -> 01

2009-06-15T13:45:30 -> 15
"ddd" 星期幾的縮寫名稱。

詳細資訊:"ddd" 自訂格式規範
2009-06-15T13:45:30 -> Mon (en-US)

2009-06-15T13:45:30 -> Пн (ru-RU)

2009-06-15T13:45:30 -> lun。 (fr-FR)
"dddd" 星期幾的完整名稱。

詳細資訊:"dddd" 自訂格式規範
2009-06-15T13:45:30 -> 星期一 (en-US)

2009-06-15T13:45:30 -> понедельник (ru-RU)

2009-06-15T13:45:30 -> lundi (fr-FR)
"f" 日期和時間值中的十分之一秒。

詳細資訊:"f" 自訂格式規範
2009-06-15T13:45:30.6170000 -> 6

2009-06-15T13:45:30.05 -> 0
"ff" 日期和時間值中的百分之一秒。

詳細資訊:"ff" 自訂格式規範
2009-06-15T13:45:30.6170000 -> 61

2009-06-15T13:45:30.0050000 -> 00
"fff" 日期和時間值中的千分之一秒。

詳細資訊:"fff" 自訂格式規範
6/15/2009 13:45:30.617 -> 617

6/15/2009 13:45:30.0005 -> 000
"ffff" 日期和時間值中的萬分之一秒。

詳細資訊:"ffff" 自訂格式規範
2009-06-15T13:45:30.6175000 -> 6175

2009-06-15T13:45:30.0000500 -> 0000
"fffff" 日期和時間值中的十萬分之一秒。

詳細資訊:"fffff" 自訂格式規範
2009-06-15T13:45:30.6175400 -> 61754

6/15/2009 13:45:30.000005 -> 00000
"ffffff" 日期和時間值中的百萬分之一秒。

詳細資訊:"ffffff" 自訂格式規範
2009-06-15T13:45:30.6175420 -> 617542

2009-06-15T13:45:30.0000005 -> 000000
"fffffff" 日期和時間值中的千萬分之一秒。

詳細資訊:"fffffff" 自訂格式規範
2009-06-15T13:45:30.6175425 -> 6175425

2009-06-15T13:45:30.0001150 -> 0001150
"F" 如果不是零,則為日期和時間值中的十分之一秒。

詳細資訊:"F" 自訂格式規範
2009-06-15T13:45:30.6170000 -> 6

2009-06-15T13:45:30.0500000 -> (無輸出)
"FF" 如果不是零,則為日期和時間值中的百分之一秒。

詳細資訊:"FF" 自訂格式規範
2009-06-15T13:45:30.6170000 -> 61

2009-06-15T13:45:30.0050000 -> (無輸出)
"FFF" 如果不是零,則為日期和時間值中的千分之一秒。

詳細資訊:"FFF" 自訂格式規範
2009-06-15T13:45:30.6170000 -> 617

2009-06-15T13:45:30.0005000 -> (無輸出)
"FFFF" 如果不是零,則為日期和時間值中的萬分之一秒。

詳細資訊:"FFFF" 自訂格式規範
2009-06-15T13:45:30.5275000 -> 5275

2009-06-15T13:45:30.0000500 -> (無輸出)
"FFFFF" 如果不是零,則為日期和時間值中的十萬分之一秒。

詳細資訊:"FFFFF" 自訂格式規範
2009-06-15T13:45:30.6175400 -> 61754

2009-06-15T13:45:30.0000050 -> (無輸出)
"FFFFFF" 如果不是零,則為日期和時間值中的百萬分之一秒。

詳細資訊:"FFFFFF" 自訂格式規範
2009-06-15T13:45:30.6175420 -> 617542

2009-06-15T13:45:30.0000005 -> (無輸出)
"FFFFFFF" 如果不是零,則為日期和時間值中的千萬分之一秒。

詳細資訊:"FFFFFFF" 自訂格式規範
2009-06-15T13:45:30.6175425 -> 6175425

2009-06-15T13:45:30.0001150 -> 000115
"g"、"gg" 週期或紀元。

詳細資訊:"g" 或 "gg" 自訂格式規範
2009-06-15T13:45:30.6170000 -> A.D.
"h" 採用 12 小時制的小時,從 1 到 12。

詳細資訊:"h" 自訂格式規範
2009-06-15T01:45:30 -> 1

2009-06-15T13:45:30 -> 1
"hh" 採用 12 小時制的小時,從 01 到 12。

詳細資訊:"hh" 自訂格式規範
2009-06-15T01:45:30 -> 01

2009-06-15T13:45:30 -> 01
"H" 採用 24 小時制的小時,從 0 到 23。

詳細資訊:"H" 自訂格式規範
2009-06-15T01:45:30 -> 1

2009-06-15T13:45:30 -> 13
"HH" 採用 24 小時制的小時,從 00 到 23。

詳細資訊:"HH" 自訂格式規範
2009-06-15T01:45:30 -> 01

2009-06-15T13:45:30 -> 13
"K" 時區資訊。

詳細資訊:"K" 自訂格式規範
搭配 DateTime 值:

2009-06-15T13:45:30,種類未指定 ->

2009-06-15T13:45:30,種類 Utc -> Z

2009-06-15T13:45:30,種類本機 -> -07:00 (取決於本機計算機設定)

搭配 DateTimeOffset 值:

2009-06-15T01:45:30-07:00 --> -07:00

2009-06-15T08:45:30+00:00 --> +00:00
"m" 分鐘,從 0 到 59。

詳細資訊:"m" 自訂格式規範
2009-06-15T01:09:30 -> 9

2009-06-15T13:29:30 -> 29
"mm" 分鐘,從 00 到 59。

詳細資訊:"mm" 自訂格式規範
2009-06-15T01:09:30 -> 09

2009-06-15T01:45:30 -> 45
"M" 月份,從 1 到 12。

詳細資訊:"M" 自訂格式規範
2009-06-15T13:45:30 -> 6
"MM" 月份,從 01 到 12。

詳細資訊:"MM" 自訂格式規範
2009-06-15T13:45:30 -> 06
"MMM" 月份的縮寫名稱。

詳細資訊:"MMM" 自訂格式規範
2009-06-15T13:45:30 -> Jun (en-US)

2009-06-15T13:45:30 -> juin (fr-FR)

2009-06-15T13:45:30 -> Jun (zu-ZA)
"MMMM" 月份的完整名稱。

詳細資訊:"MMMM" 自訂格式規範
2009-06-15T13:45:30 -> 6 月 (en-US)

2009-06-15T13:45:30 -> juni (da-DK)

2009-06-15T13:45:30 -> uJuni (zu-ZA)
"s" 第二個,從 0 到 59。

詳細資訊:"s" 自訂格式規範
2009-06-15T13:45:09 -> 9
"ss" 第二個,從 00 到 59。

詳細資訊:"ss" 自訂格式規範
2009-06-15T13:45:09 -> 09
"t" AM/PM 指示項的第一個字元。

詳細資訊:"t" 自訂格式規範
2009-06-15T13:45:30 -> P (en-US)

2009-06-15T13:45:30 -> 午 (ja-JP)

2009-06-15T13:45:30 -> (fr-FR)
"tt" AM/PM 指示項。

詳細資訊:"tt" 自訂格式規範
2009-06-15T13:45:30 -> PM (en-US)

2009-06-15T13:45:30 -> 午後 (ja-JP)

2009-06-15T13:45:30 -> (fr-FR)
"y" 年份,從 0 到 99。

詳細資訊:"y" 自訂格式規範
0001-01-01T00:00:00 -> 1

0900-01-01T00:00:00 -> 0

1900-01-01T00:00:00 -> 0

2009-06-15T13:45:30 -> 9

2019-06-15T13:45:30 -> 19
"yy" 年份,從 00 到 99。

詳細資訊:"yy" 自訂格式規範
0001-01-01T00:00:00 -> 01

0900-01-01T00:00:00 -> 00

1900-01-01T00:00:00 -> 00

2019-06-15T13:45:30 -> 19
"yyy" 年份,至少三位數。

詳細資訊:"yyy" 自訂格式規範
0001-01-01T00:00:00 -> 001

0900-01-01T00:00:00 -> 900

1900-01-01T00:00:00 -> 1900

2009-06-15T13:45:30 -> 2009
"yyyy" 以四位數表示的年份。

詳細資訊:"yyyy" 自訂格式規範
0001-01-01T00:00:00 -> 0001

0900-01-01T00:00:00 -> 0900

1900-01-01T00:00:00 -> 1900

2009-06-15T13:45:30 -> 2009
"yyyyy" 以五位數表示的年份。

詳細資訊:"yyyyy" 自訂格式規範
0001-01-01T00:00:00 -> 00001

2009-06-15T13:45:30 -> 02009
"z" 與 UTC 相差的時數,不加上前置零。

詳細資訊:"z" 自訂格式規範
2009-06-15T13:45:30-07:00 -> -7
"zz" 與 UTC 相差的時數,單一位數值會加上前置零。

詳細資訊:"zz" 自訂格式規範
2009-06-15T13:45:30-07:00 -> -07
"zzz" 與 UTC 相差的時數和分鐘數。

詳細資訊:"zzz" 自訂格式規範
2009-06-15T13:45:30-07:00 -> -07:00
":" 時間分隔符號。

詳細資訊:":" 自訂格式規範
2009-06-15T13:45:30 -> :(en-US)

2009-06-15T13:45:30 -> 。 (it-IT)

2009-06-15T13:45:30 -> :(ja-JP)
"/" 日期分隔符號。

詳細資訊:"/" 自訂格式規範
2009-06-15T13:45:30 -> / (en-US)

2009-06-15T13:45:30 -> (ar-DZ)

2009-06-15T13:45:30 -> 。 (tr-TR)
"string"

'字串'
常值字串分隔符號。

詳細資訊︰字元常值
2009-06-15T13:45:30 (“arr:” h:m t) -> arr: 1:45 P

2009-06-15T13:45:30 ('arr:' h:m t) -> arr: 1:45 P
% 將下列字元定義為自訂格式規範。

詳細資訊: 使用單一自定義格式規範
2009-06-15T13:45:30 (%h) -> 1
\ 逸出字元。

詳細資訊︰字元常值使用逸出字元
2009-06-15T13:45:30 (h \h) -> 1 小時
任意字元 字元會原封不動地複製到結果字串。

詳細資訊︰字元常值
2009-06-15T01:45:30 (arr hh:mm t) -> arr 01:45 A

下列各節提供每個自訂日期和時間格式規範的其他資訊。 除非特別註明,否則每個規範都會產生相同的字串表示,無論是與 DateTime 值或 DateTimeOffset 值搭配使用。

Day “d” 格式規範

"d" 自訂格式規範

“d” 自定義格式規範以 1 到 31 的數位表示月份的日期。 單一位數的天數會格式化為沒有前置零的數字。

如果單獨使用 "d" 格式規範,而沒有其他自訂格式規範,則會將它解譯為 "d" 標準日期和時間格式規範。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在幾個格式字串中加入 "d" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("d, M",
                  CultureInfo.InvariantCulture));
// Displays 29, 8

Console.WriteLine(date1.ToString("d MMMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays 29 August
Console.WriteLine(date1.ToString("d MMMM",
                  CultureInfo.CreateSpecificCulture("es-MX")));
// Displays 29 agosto
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("d, M", _
                  CultureInfo.InvariantCulture))
' Displays 29, 8

Console.WriteLine(date1.ToString("d MMMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays 29 August
Console.WriteLine(date1.ToString("d MMMM", _
                  CultureInfo.CreateSpecificCulture("es-MX")))
' Displays 29 agosto                                                

回到表格

"dd" 自訂格式規範

“dd” 自定義格式字串會以 01 到 31 的數位來表示月份的日期。 單一位數的天數會格式化為有前置零的數字。

下列範例會在自訂格式字串中加入 "dd" 自訂格式規範。

DateTime date1 = new DateTime(2008, 1, 2, 6, 30, 15);

Console.WriteLine(date1.ToString("dd, MM",
                  CultureInfo.InvariantCulture));
// 02, 01
Dim date1 As Date = #1/2/2008 6:30:15AM#

Console.WriteLine(date1.ToString("dd, MM", _
                  CultureInfo.InvariantCulture))
' 02, 01

回到表格

"ddd" 自訂格式規範

"ddd" 自訂格式規範表示星期幾的縮寫名稱。 星期幾的當地語系化縮寫名稱是擷取自目前或指定之文化特性的 DateTimeFormatInfo.AbbreviatedDayNames 屬性。

下列範例會在自訂格式字串中加入 "ddd" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("ddd d MMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM",
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 août
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("ddd d MMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays ven. 29 août                                                

回到表格

"dddd" 自訂格式規範

"dddd" 自訂格式規範 (加上任意個額外的 "d" 規範) 表示星期幾的完整名稱。 星期幾的當地語系化名稱是擷取自目前或指定之文化特性的 DateTimeFormatInfo.DayNames 屬性。

下列範例會在自訂格式字串中加入 "dddd" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("dddd dd MMMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM",
                  CultureInfo.CreateSpecificCulture("it-IT")));
// Displays venerdì 29 agosto
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("dddd dd MMMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM", _
                  CultureInfo.CreateSpecificCulture("it-IT")))
' Displays venerdì 29 agosto                                          

回到表格

小寫秒 「f」 分數規範

"f" 自訂格式規範

"f" 自訂格式規範表示秒數的一位有效小數位數,也就是說,它表示日期和時間值中的十分之一秒。

如果單獨使用 "f" 格式規範,而沒有其他格式規範,則會將它解譯為 "f" 標準日期和時間格式規範。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

當您使用 "f" 格式規範做為提供給 ParseExactTryParseExactParseExactTryParseExact 方法的一部分格式字串時,"f" 格式規範的數目表示秒數部分最重要的小數位數,必須存在此小數位數才能成功剖析字串。

下列範例會在自訂格式字串中加入 "f" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

回到表格

"ff" 自訂格式規範

"ff" 自訂格式規範表示秒數的兩位有效小數位數,也就是說,它表示日期和時間值中的百分之一秒。

下列範例會在自訂格式字串中加入 "ff" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

回到表格

"fff" 自訂格式規範

"fff" 自訂格式規範表示秒數的三位有效小數位數,也就是說,它表示日期和時間值中的千分之一秒。

下列範例會在自訂格式字串中加入 "fff" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

回到表格

"ffff" 自訂格式規範

"ffff" 自訂格式規範表示秒數的四位有效小數位數,也就是說,它表示日期和時間值中的萬分之一秒。

雖然時間值的秒數部分可以顯示到萬分之一秒,但該值可能沒有太大的意義。 日期和時間值的精確度會根據系統時鐘的解析度而定。 在 Windows NT 3.5 (含) 以上版本和 Windows Vista 作業系統中,時鐘的解析度大約為 10-15 毫秒。

回到表格

"fffff" 自訂格式規範

"fffff" 自訂格式規範表示秒數的五位有效小數位數,也就是說,它表示日期和時間值中的十萬分之一秒。

雖然時間值的秒數部分可以顯示到萬分之一秒,但該值可能沒有太大的意義。 日期和時間值的精確度會根據系統時鐘的解析度而定。 在 Windows NT 3.5 (含) 以上版本和 Windows Vista 作業系統中,時鐘的解析度大約為 10-15 毫秒。

回到表格

"ffffff" 自訂格式規範

"ffffff" 自訂格式規範表示秒數的六位有效小數位數,也就是說,它表示日期和時間值中的百萬分之一秒。

雖然時間值的秒數部分可以顯示到百萬分之一秒,但該值可能沒有太大的意義。 日期和時間值的精確度會根據系統時鐘的解析度而定。 在 Windows NT 3.5 (含) 以上版本和 Windows Vista 作業系統中,時鐘的解析度大約為 10-15 毫秒。

回到表格

"fffffff" 自訂格式規範

"fffffff" 自訂格式規範表示秒數的七位有效小數位數,也就是說,它表示日期和時間值中的千萬分之一秒。

雖然時間值的秒數部分可以顯示到千萬分之一秒,但該值可能沒有太大的意義。 日期和時間值的精確度會根據系統時鐘的解析度而定。 在 Windows NT 3.5 (含) 以上版本和 Windows Vista 作業系統中,時鐘的解析度大約為 10-15 毫秒。

回到表格

大寫秒數 「F」 分數規範

"F" 自訂格式規範

"F" 自訂格式規範表示秒數的一位有效小數位數,也就是說,它表示日期和時間值中的十分之一秒。 如果數位為零,則不會顯示任何專案,而且不會顯示緊接在秒數後面的小數點。

如果單獨使用 "F" 格式規範,而沒有其他格式規範,則會將它解譯為 "F" 標準日期和時間格式規範。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

ParseExactTryParseExactParseExactTryParseExact 方法搭配使用的 "F" 格式規範數目,表示秒數部分最重要小數位數的上限,要成功剖析字串就不能超過此小數位數。

下列範例會在自訂格式字串中加入 "F" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

回到表格

"FF" 自訂格式規範

"FF" 自訂格式規範表示秒數的兩位有效小數位數,也就是說,它表示日期和時間值中的百分之一秒。 不會顯示尾端零。 如果兩個有效位數為零,則不會顯示任何專案,在此情況下,也不會顯示緊隨秒數的小數點。

下列範例會在自訂格式字串中加入 "FF" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

回到表格

"FFF" 自訂格式規範

"FFF" 自訂格式規範表示秒數的三位有效小數位數,也就是說,它表示日期和時間值中的千分之一秒。 不會顯示尾端零。 如果三個有效位數為零,則不會顯示任何專案,在此情況下,也不會顯示緊隨秒數的小數點。

下列範例會在自訂格式字串中加入 "FFF" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

回到表格

"FFFF" 自訂格式規範

"FFFF" 自訂格式規範表示秒數的四位有效小數位數,也就是說,它表示日期和時間值中的萬分之一秒。 不會顯示尾端零。 如果四個有效位數為零,則不會顯示任何專案,在此情況下,也不會顯示緊隨秒數的小數點。

雖然時間值的秒數部分可以顯示到萬分之一秒,但該值可能沒有太大的意義。 日期和時間值的精確度會根據系統時鐘的解析度而定。 在 Windows NT 3.5 (含) 以上版本和 Windows Vista 作業系統中,時鐘的解析度大約為 10-15 毫秒。

回到表格

"FFFFF" 自訂格式規範

"FFFFF" 自訂格式規範表示秒數的五位有效小數位數,也就是說,它表示日期和時間值中的十萬分之一秒。 不會顯示尾端零。 如果五個有效位數為零,則不會顯示任何專案,在此情況下,也不會顯示緊隨秒數的小數點。

雖然時間值的秒數部分可以顯示到萬分之一秒,但該值可能沒有太大的意義。 日期和時間值的精確度會根據系統時鐘的解析度而定。 在 Windows NT 3.5 (含) 以上版本和 Windows Vista 作業系統中,時鐘的解析度大約為 10-15 毫秒。

回到表格

"FFFFFF" 自訂格式規範

"FFFFFF" 自訂格式規範表示秒數的六位有效小數位數,也就是說,它表示日期和時間值中的百萬分之一秒。 不會顯示尾端零。 如果六個有效位數為零,則不會顯示任何專案,在此情況下,也不會顯示緊接秒數的小數點。

雖然時間值的秒數部分可以顯示到百萬分之一秒,但該值可能沒有太大的意義。 日期和時間值的精確度會根據系統時鐘的解析度而定。 在 Windows NT 3.5 (含) 以上版本和 Windows Vista 作業系統中,時鐘的解析度大約為 10-15 毫秒。

回到表格

"FFFFFFF" 自訂格式規範

"FFFFFFF" 自訂格式規範表示秒數的七位有效小數位數,也就是說,它表示日期和時間值中的千萬分之一秒。 不會顯示尾端零。 如果七個有效位數為零,則不會顯示任何專案,在此情況下,也不會顯示緊隨秒數的小數點。

雖然時間值的秒數部分可以顯示到千萬分之一秒,但該值可能沒有太大的意義。 日期和時間值的精確度會根據系統時鐘的解析度而定。 在 Windows NT 3.5 (含) 以上版本和 Windows Vista 作業系統中,時鐘的解析度大約為 10-15 毫秒。

回到表格

紀元 “g” 格式規範

"g" 或 "gg" 自訂格式規範

“g” 或 “gg” 自定義格式規範(加上任何數目的額外 “g” 規範)代表句點或紀元,例如 A.D。如果要格式化的日期沒有相關聯的句點或紀元字串,則格式化作業會忽略此規範。

如果單獨使用 "g" 格式規範,而沒有其他自訂格式規範,則會將它解譯為 "g" 標準日期和時間格式規範。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在自訂格式字串中加入 "g" 自訂格式規範。

DateTime date1 = new DateTime(70, 08, 04);

Console.WriteLine(date1.ToString("MM/dd/yyyy g",
                  CultureInfo.InvariantCulture));
// Displays 08/04/0070 A.D.
Console.WriteLine(date1.ToString("MM/dd/yyyy g",
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 08/04/0070 ap. J.-C.
Dim date1 As Date = #08/04/0070#

Console.WriteLine(date1.ToString("MM/dd/yyyy g", _
                  CultureInfo.InvariantCulture))
' Displays 08/04/0070 A.D.                        
Console.WriteLine(date1.ToString("MM/dd/yyyy g", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 08/04/0070 ap. J.-C.

回到表格

小寫小時 「h」 格式規範

"h" 自訂格式規範

“h” 自定義格式規範以 1 到 12 的數位表示小時;也就是說,小時是以 12 小時制來表示,以計算從午夜或中午起算的整個小時數。 午夜後的特定小時與下午的相同小時會難以區分。 小時是不進位的,而且單一位數的小時會格式化為沒有前置零的數字。 例如,假設時間為上午或下午 5:43,則此自訂格式規範會顯示 "5"。

如果單獨使用 "h" 格式規範,而沒有其他自訂格式規範,則會將它解譯為標準日期和時間格式規範,並擲回 FormatException。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在自訂格式字串中加入 "h" 自訂格式規範。

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 µ
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 µ
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1 µ                        
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1.5 µ

回到表格

"hh" 自訂格式規範

“hh” 自定義格式規範 (加上任何其他 “h” 規範的任意數目)以 01 到 12 的數位表示小時:也就是說,小時是以 12 小時制來表示,以計算從午夜或中午起算的整個小時數。 午夜後的特定小時與下午的相同小時會難以區分。 小時是不進位的,而且單一位數的小時會格式化為有前置零的數字。 例如,假設時間為上午或下午 5:43,則此格式規範會顯示 "05"。

下列範例會在自訂格式字串中加入 "hh" 自訂格式規範。

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01 du.
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01.50 du.

回到表格

大寫小時 「H」 格式規範

"H" 自訂格式規範

“H” 自定義格式規範以 0 到 23 的數位表示小時;也就是說,小時是以零起始的 24 小時制來表示,以計算午夜以來的小時數。 單一位數的小時會格式化為沒有前置零的數字。

如果單獨使用 "H" 格式規範,而沒有其他自訂格式規範,則會將它解譯為標準日期和時間格式規範,並擲回 FormatException。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在自訂格式字串中加入 "H" 自訂格式規範。

DateTime date1 = new DateTime(2008, 1, 1, 6, 9, 1);
Console.WriteLine(date1.ToString("H:mm:ss",
                  CultureInfo.InvariantCulture));
// Displays 6:09:01
Dim date1 As Date = #6:09:01AM#
Console.WriteLine(date1.ToString("H:mm:ss", _
                  CultureInfo.InvariantCulture))
' Displays 6:09:01                        

回到表格

"HH" 自訂格式規範

“HH” 自定義格式規範 (加上任何數目的額外 “H” 規範)以 00 到 23 的數位表示小時:也就是說,小時是以零起始的 24 小時制來表示,以計算午夜以來的小時數。 單一位數的小時會格式化為具有前置零的數字。

下列範例會在自訂格式字串中加入 "HH" 自訂格式規範。

DateTime date1 = new DateTime(2008, 1, 1, 6, 9, 1);
Console.WriteLine(date1.ToString("HH:mm:ss",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01
Dim date1 As Date = #6:09:01AM#
Console.WriteLine(date1.ToString("HH:mm:ss", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01                        

回到表格

時區 「K」 格式規範

"K" 自訂格式規範

"K" 自訂格式規範表示日期和時間值的時區資訊。 與 DateTime 值搭配使用這個格式規範時,結果字串會由 DateTime.Kind 屬性的值定義:

若為 DateTimeOffset 值,"K" 格式規範相當於 "zzz" 格式規範,所產生的結果字串會包含 DateTimeOffset 值與 UTC 之間的時差。

如果單獨使用 "K" 格式規範,而沒有其他自訂格式規範,則會將它解譯為標準日期和時間格式規範,並擲回 FormatException。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會顯示美國太平洋時區中,"K" 自訂格式規範與各種 DateTimeDateTimeOffset 值搭配使用所產生的結果字串。

Console.WriteLine(DateTime.Now.ToString("%K"));
// Displays -07:00
Console.WriteLine(DateTime.UtcNow.ToString("%K"));
// Displays Z
Console.WriteLine("'{0}'",
                  DateTime.SpecifyKind(DateTime.Now,
                       DateTimeKind.Unspecified).ToString("%K"));
// Displays ''
Console.WriteLine(DateTimeOffset.Now.ToString("%K"));
// Displays -07:00
Console.WriteLine(DateTimeOffset.UtcNow.ToString("%K"));
// Displays +00:00
Console.WriteLine(new DateTimeOffset(2008, 5, 1, 6, 30, 0,
                      new TimeSpan(5, 0, 0)).ToString("%K"));
// Displays +05:00
Console.WriteLine(Date.Now.ToString("%K"))
' Displays -07:00
Console.WriteLine(Date.UtcNow.ToString("%K"))
' Displays Z      
Console.WriteLine("'{0}'", _
                  Date.SpecifyKind(Date.Now, _
                                   DateTimeKind.Unspecified). _
                  ToString("%K"))
' Displays ''      
Console.WriteLine(DateTimeOffset.Now.ToString("%K"))
' Displays -07:00
Console.WriteLine(DateTimeOffset.UtcNow.ToString("%K"))
' Displays +00:00
Console.WriteLine(New DateTimeOffset(2008, 5, 1, 6, 30, 0, _
                                     New TimeSpan(5, 0, 0)). _
                  ToString("%K"))
' Displays +05:00                        

回到表格

分鐘 「m」 格式規範

"m" 自訂格式規範

“m” 自定義格式規範會將分鐘表示為 0 到 59 的數位。 分鐘表示自上個整點以來已經過的完整分鐘數。 單一位數的分鐘會格式化為沒有前置零的數字。

如果單獨使用 "m" 格式規範,而沒有其他自訂格式規範,則會將它解譯為 "m" 標準日期和時間格式規範。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在自訂格式字串中加入 "m" 自訂格式規範。

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 µ
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 µ
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1 µ                        
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1.5 µ

回到表格

"mm" 自訂格式規範

“mm” 自定義格式規範(加上任意數目的額外 “m” 規範)以 00 到 59 的數位表示分鐘。 分鐘表示自上個整點以來已經過的完整分鐘數。 單一位數的分鐘會格式化為具有前置零的數字。

下列範例會在自訂格式字串中加入 "mm" 自訂格式規範。

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01 du.
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01.50 du.

回到表格

月份 「M」 格式規範

"M" 自訂格式規範

“M” 自定義格式規範將月份表示為 1 到 12 的數位(或從 1 到 13 代表具有 13 個月的行事歷)。 單一位數的月份會格式化為沒有前置零的數字。

如果單獨使用 "M" 格式規範,而沒有其他自訂格式規範,則會將它解譯為 "M" 標準日期和時間格式規範。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在自訂格式字串中加入 "M" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 18);
Console.WriteLine(date1.ToString("(M) MMM, MMMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays (8) Aug, August
Console.WriteLine(date1.ToString("(M) MMM, MMMM",
                  CultureInfo.CreateSpecificCulture("nl-NL")));
// Displays (8) aug, augustus
Console.WriteLine(date1.ToString("(M) MMM, MMMM",
                  CultureInfo.CreateSpecificCulture("lv-LV")));
// Displays (8) Aug, augusts
Dim date1 As Date = #8/18/2008#
Console.WriteLine(date1.ToString("(M) MMM, MMMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays (8) Aug, August
Console.WriteLine(date1.ToString("(M) MMM, MMMM", _
                  CultureInfo.CreateSpecificCulture("nl-NL")))
' Displays (8) aug, augustus
Console.WriteLine(date1.ToString("(M) MMM, MMMM", _
                  CultureInfo.CreateSpecificCulture("lv-LV")))
' Displays (8) Aug, augusts                       

回到表格

"MM" 自訂格式規範

“MM” 自定義格式規範將月份表示為 01 到 12 的數位(或從 1 到 13 代表具有 13 個月的行事歷)。 單一位數的月份會格式化為有前置零的數字。

下列範例會在自訂格式字串中加入 "MM" 自訂格式規範。

DateTime date1 = new DateTime(2008, 1, 2, 6, 30, 15);

Console.WriteLine(date1.ToString("dd, MM",
                  CultureInfo.InvariantCulture));
// 02, 01
Dim date1 As Date = #1/2/2008 6:30:15AM#

Console.WriteLine(date1.ToString("dd, MM", _
                  CultureInfo.InvariantCulture))
' 02, 01

回到表格

"MMM" 自訂格式規範

"MMM" 自訂格式規範表示月份的縮寫名稱。 月份的當地語系化縮寫名稱是擷取自目前或指定之文化特性的 DateTimeFormatInfo.AbbreviatedMonthNames 屬性。

下列範例會在自訂格式字串中加入 "MMM" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("ddd d MMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM",
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 août
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("ddd d MMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays ven. 29 août                                                

回到表格

"MMMM" 自訂格式規範

"MMMM" 自訂格式規範表示月份的完整名稱。 月份的當地語系化名稱是擷取自目前或指定之文化特性的 DateTimeFormatInfo.MonthNames 屬性。

下列範例會在自訂格式字串中加入 "MMMM" 自訂格式規範。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("dddd dd MMMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM",
                  CultureInfo.CreateSpecificCulture("it-IT")));
// Displays venerdì 29 agosto
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("dddd dd MMMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM", _
                  CultureInfo.CreateSpecificCulture("it-IT")))
' Displays venerdì 29 agosto                                          

回到表格

秒 「s」 格式規範

"s" 自訂格式規範

“s” 自定義格式規範以 0 到 59 的數位表示秒。 結果表示自上個分鐘以來已經過的完整秒數。 單一位數的秒數會格式化為沒有前置零的數字。

如果單獨使用 "s" 格式規範,而沒有其他自訂格式規範,則會將它解譯為 "s" 標準日期和時間格式規範。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在自訂格式字串中加入 "s" 自訂格式規範。

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 µ
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 µ
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1 µ                        
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1.5 µ

回到表格

"ss" 自訂格式規範

“ss” 自定義格式規範(加上任何數目的額外 “s” 規範)以 00 到 59 的數位表示秒。 結果表示自上個分鐘以來已經過的完整秒數。 單一位數的秒數會格式化為具有前置零的數字。

下列範例會在自訂格式字串中加入 "ss" 自訂格式規範。

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01 du.
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01.50 du.

回到表格

Meridiem 「t」 格式規範

"t" 自訂格式規範

"t" 自訂格式規範表示 AM/PM 指示項的第一個字元。 適當的當地語系化指示項是擷取自目前或特定文化特性的 DateTimeFormatInfo.AMDesignatorDateTimeFormatInfo.PMDesignator 屬性。 AM 指示項用於從 0:00:00 (午夜) 到 11:59:59.999 為止的所有時間。 PM 指示項用於從 12:00:00 (中午) 到 23:59:59.999 為止的所有時間。

如果單獨使用 "t" 格式規範,而沒有其他自訂格式規範,則會將它解譯為 "t" 標準日期和時間格式規範。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在自訂格式字串中加入 "t" 自訂格式規範。

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 µ
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 µ
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1 µ                        
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1.5 µ

回到表格

"tt" 自訂格式規範

"tt" 自訂格式規範 (加上任意個額外的 "t" 規範) 表示整個 AM/PM 指示項。 適當的當地語系化指示項是擷取自目前或特定文化特性的 DateTimeFormatInfo.AMDesignatorDateTimeFormatInfo.PMDesignator 屬性。 AM 指示項用於從 0:00:00 (午夜) 到 11:59:59.999 為止的所有時間。 PM 指示項用於從 12:00:00 (中午) 到 23:59:59.999 為止的所有時間。

對於需要特別強調 AM 與 PM 的語言,請務必使用 "tt" 規範。 其中一種就是日文,日文的 AM 和 PM 指示項的第二個字元 (非第一個字元) 不同。

下列範例會在自訂格式字串中加入 "tt" 自訂格式規範。

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01 du.
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01.50 du.

回到表格

年 「y」 格式規範

"y" 自訂格式規範

"y" 自訂格式規範以一位或兩位數來表示年份。 如果年份超過兩個位數,結果中只會出現兩個低位數字。 如果兩位數年份的第一個數字以零開始 (例如 2008),則會格式化為沒有前置零的數字。

如果單獨使用 "y" 格式規範,而沒有其他自訂格式規範,則會將它解譯為 "y" 標準日期和時間格式規範。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在自訂格式字串中加入 "y" 自訂格式規範。

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

回到表格

"yy" 自訂格式規範

"yy" 自訂格式規範以兩位數來表示年份。 如果年份超過兩個位數,結果中只會出現兩個低位數字。 如果兩位數年份少於兩個有效位數,則會以前置零填補此數字來產生兩位數。

在剖析作業中,使用 "yy" 自訂格式規範所剖析的兩位數年份,是根據格式提供者現行曆法的 Calendar.TwoDigitYearMax 屬性進行解譯。 下列範例會使用 en-US 文化特性的預設西曆 (在此案例中為目前的文化特性),剖析具有兩位數年份之日期的字串表示。 接著它會將目前文化特性的 CultureInfo 物件變更為使用已修改 GregorianCalendar 屬性的 TwoDigitYearMax 物件。

using System;
using System.Globalization;
using System.Threading;

public class Example7
{
    public static void Main()
    {
        string fmt = "dd-MMM-yy";
        string value = "24-Jan-49";

        Calendar cal = (Calendar)CultureInfo.CurrentCulture.Calendar.Clone();
        Console.WriteLine("Two Digit Year Range: {0} - {1}",
                          cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax);

        Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, null));
        Console.WriteLine();

        cal.TwoDigitYearMax = 2099;
        CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
        culture.DateTimeFormat.Calendar = cal;
        Thread.CurrentThread.CurrentCulture = culture;

        Console.WriteLine("Two Digit Year Range: {0} - {1}",
                          cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax);
        Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, null));
    }
}
// The example displays the following output:
//       Two Digit Year Range: 1930 - 2029
//       1/24/1949
//
//       Two Digit Year Range: 2000 - 2099
//       1/24/2049
Imports System.Globalization
Imports System.Threading

Module Example
    Public Sub Main()
        Dim fmt As String = "dd-MMM-yy"
        Dim value As String = "24-Jan-49"

        Dim cal As Calendar = CType(CultureInfo.CurrentCulture.Calendar.Clone(), Calendar)
        Console.WriteLine("Two Digit Year Range: {0} - {1}",
                          cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax)

        Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, Nothing))
        Console.WriteLine()

        cal.TwoDigitYearMax = 2099
        Dim culture As CultureInfo = CType(CultureInfo.CurrentCulture.Clone(), CultureInfo)
        culture.DateTimeFormat.Calendar = cal
        Thread.CurrentThread.CurrentCulture = culture

        Console.WriteLine("Two Digit Year Range: {0} - {1}",
                          cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax)
        Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, Nothing))
    End Sub
End Module
' The example displays the following output:
'       Two Digit Year Range: 1930 - 2029
'       1/24/1949
'       
'       Two Digit Year Range: 2000 - 2099
'       1/24/2049

下列範例會在自訂格式字串中加入 "yy" 自訂格式規範。

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

回到表格

"yyy" 自訂格式規範

"yyy" 自訂格式規範以最少三位數來表示年份。 如果年份超過三個有效位數,它們會包含在結果字串中。 如果年份少於三個位數,則會以前置零填補此數字來產生三位數。

注意

對於可具有五位數年份的泰國佛教曆法,此格式規範會顯示全部有效位數。

下列範例會在自訂格式字串中加入 "yyy" 自訂格式規範。

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

回到表格

"yyyy" 自訂格式規範

"yyyy" 自訂格式規範以最少四位數來表示年份。 如果年份超過四個有效位數,它們會包含在結果字串中。 如果年份少於四個位數,則會以前置零填補此數字,以產生四個位數。

注意

對於可具有五位數年份的泰國佛教曆法,此格式規範會顯示最少四個位數。

下列範例會在自訂格式字串中加入 "yyyy" 自訂格式規範。

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

回到表格

"yyyyy" 自訂格式規範

"yyyyy" 自訂格式規範 (加上任意個額外的 "y" 規範) 以最少五位數來表示年份。 如果年份超過五個有效位數,它們會包含在結果字串中。 如果年份少於五位數,則會以前置零填補此數字來產生五位數。

如果有更多 "y" 規範,則會視需要以前置零填補此數字,以產生該 "y" 規範數目的位數。

下列範例會在自訂格式字串中加入 "yyyyy" 自訂格式規範。

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

回到表格

位移 「z」 格式規範

"z" 自訂格式規範

使用 DateTime 值時,“z” 自定義格式規範代表指定時區的帶正負號位移,以小時為單位。 顯示時差時,一定會有前置正負號。 加號 (+) 表示早於 UTC 的時數,減號 (-) 表示晚於 UTC 的時數。 單一位數位移的格式 沒有 前置零。

下表顯示位移值如何根據 DateTimeKind而變更。

DateTimeKind 位移值
Local 本機操作系統時區與UTC的帶正負號位移。
Unspecified 本機操作系統時區與UTC的帶正負號位移。
Utc +0 在 .NET Core 和 .NET 5+。

在 .NET Framework 上,本機操作系統時區與UTC的已簽署位移。

搭配 DateTimeOffset 值使用時,此格式規範表示 DateTimeOffset 值與 UTC 之間的時差,以小時為單位。

如果單獨使用 "z" 格式規範,而沒有其他自訂格式規範,則會將它解譯為標準日期和時間格式規範,並擲回 FormatException。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

下列範例會在自訂格式字串中加入 "z" 自訂格式規範。

DateTime date1 = DateTime.UtcNow;
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date1));
// Displays -7, -07, -07:00 on .NET Framework
// Displays +0, +00, +00:00 on .NET Core and .NET 5+

DateTimeOffset date2 = new DateTimeOffset(2008, 8, 1, 0, 0, 0,
                                          new TimeSpan(6, 0, 0));
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date2));
// Displays +6, +06, +06:00
Dim date1 As Date = Date.UtcNow
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date1))
' Displays -7, -07, -07:00 on .NET Framework
' Displays +0, +00, +00:00 on .NET Core and .NET 5+

Dim date2 As New DateTimeOffset(2008, 8, 1, 0, 0, 0, _
                                New Timespan(6, 0, 0))
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date2))
' Displays +6, +06, +06:00

回到表格

"zz" 自訂格式規範

使用 DateTime 值時,「zz」 自定義格式規範代表指定時區的帶正負號位移,以小時為單位。 顯示時差時,一定會有前置正負號。 加號 (+) 表示早於 UTC 的時數,減號 (-) 表示晚於 UTC 的時數。 單一位數位移的格式為前置零。

下表顯示位移值如何根據 DateTimeKind而變更。

DateTimeKind 位移值
Local 本機操作系統時區與UTC的帶正負號位移。
Unspecified 本機操作系統時區與UTC的帶正負號位移。
Utc +00 在 .NET Core 和 .NET 5+。

在 .NET Framework 上,本機操作系統時區與UTC的已簽署位移。

搭配 DateTimeOffset 值使用時,此格式規範表示 DateTimeOffset 值與 UTC 之間的時差,以小時為單位。

下列範例會在自訂格式字串中加入 "zz" 自訂格式規範。

DateTime date1 = DateTime.UtcNow;
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date1));
// Displays -7, -07, -07:00 on .NET Framework
// Displays +0, +00, +00:00 on .NET Core and .NET 5+

DateTimeOffset date2 = new DateTimeOffset(2008, 8, 1, 0, 0, 0,
                                          new TimeSpan(6, 0, 0));
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date2));
// Displays +6, +06, +06:00
Dim date1 As Date = Date.UtcNow
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date1))
' Displays -7, -07, -07:00 on .NET Framework
' Displays +0, +00, +00:00 on .NET Core and .NET 5+

Dim date2 As New DateTimeOffset(2008, 8, 1, 0, 0, 0, _
                                New Timespan(6, 0, 0))
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date2))
' Displays +6, +06, +06:00

回到表格

"zzz" 自訂格式規範

使用 DateTime 值時,「zzz」 自訂格式規範代表指定時區的帶正負號位移,以小時和分鐘為單位。 顯示時差時,一定會有前置正負號。 加號 (+) 表示早於 UTC 的時數,減號 (-) 表示晚於 UTC 的時數。 單一位數的時差會格式化為有前置零的數字。

下表顯示位移值如何根據 DateTimeKind而變更。

DateTimeKind 位移值
Local 本機操作系統時區與UTC的帶正負號位移。
Unspecified 本機操作系統時區與UTC的帶正負號位移。
Utc +00:00 在 .NET Core 和 .NET 5+。

在 .NET Framework 上,本機操作系統時區與UTC的已簽署位移。

搭配 DateTimeOffset 值使用時,此格式規範表示 DateTimeOffset 值與 UTC 之間的時差,以小時和分鐘為單位。

下列範例會在自訂格式字串中加入 "zzz" 自訂格式規範。

DateTime date1 = DateTime.UtcNow;
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date1));
// Displays -7, -07, -07:00 on .NET Framework
// Displays +0, +00, +00:00 on .NET Core and .NET 5+

DateTimeOffset date2 = new DateTimeOffset(2008, 8, 1, 0, 0, 0,
                                          new TimeSpan(6, 0, 0));
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date2));
// Displays +6, +06, +06:00
Dim date1 As Date = Date.UtcNow
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date1))
' Displays -7, -07, -07:00 on .NET Framework
' Displays +0, +00, +00:00 on .NET Core and .NET 5+

Dim date2 As New DateTimeOffset(2008, 8, 1, 0, 0, 0, _
                                New Timespan(6, 0, 0))
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date2))
' Displays +6, +06, +06:00

回到表格

日期和時間分隔符規範

":" 自訂格式規範

":" 自訂格式規範表示時間分隔符號,用於區別時、分、秒。 適當的當地語系化時間分隔符號是擷取自目前或指定之文化特性的 DateTimeFormatInfo.TimeSeparator 屬性。

注意

若要變更特定日期和時間字串的時間分隔符號,請在常值字串分隔符號內指定分隔字元。 例如,自訂格式字串 hh'_'dd'_'ss 產生的結果字串中,一律使用 "_" (底線) 作為時間分隔符號。 若要變更文化特性所有日期的時間分隔符號,請變更目前文化特性的 DateTimeFormatInfo.TimeSeparator 屬性值,或是具現化 DateTimeFormatInfo 物件、將字元指派給它的 TimeSeparator 屬性,並呼叫包含 IFormatProvider 參數的格式化方法之多載。

如果單獨使用 ":" 格式規範,而沒有其他自訂格式規範,則會將它解譯為標準日期和時間格式規範,並擲回 FormatException。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

回到表格

"/" 自訂格式規範

"/" 自訂格式規範表示日期分隔符號,用於區別年、月、日。 適當的當地語系化日期分隔符號是擷取自目前或指定之文化特性的 DateTimeFormatInfo.DateSeparator 屬性。

注意

若要變更特定日期和時間字串的日期分隔符號,請在常值字串分隔符號內指定分隔字元。 例如,自訂格式字串 mm'/'dd'/'yyyy 產生的結果字串中,一律使用 "/" 作為日期分隔符號。 若要變更文化特性的所有日期之日期分隔符號,請變更目前文化特性的 DateTimeFormatInfo.DateSeparator 屬性值,或是具現化 DateTimeFormatInfo 物件、將字元指派給它的 DateSeparator 屬性,並呼叫包含 IFormatProvider 參數的格式化方法之多載。

如果單獨使用 "/" 格式規範,而沒有其他自訂格式規範,則會將它解譯為標準日期和時間格式規範,並擲回 FormatException。 如需如何使用單一格式規範的詳細資訊,請參閱本文稍後的使用單一自訂格式規範

回到表格

字元常值

自定義日期和時間格式字串中的下列字元是保留的,而且一律會解譯為格式化字元,或在 、'/\的情況下",解譯為特殊字元。

  • F
  • H
  • K
  • M
  • d
  • f
  • g
  • h
  • m
  • s
  • t
  • y
  • z
  • %
  • :
  • /
  • "
  • '
  • \

所有其他字元一律會解譯為字元常值,並在格式化作業中,原封不動地包含在結果字串中。 在剖析作業中,它們必須完全符合輸入字串中的字元;這項比較會區分大小寫。

下列範例包含常值字元 "PST" (太平洋標準時間) 和 "PDT" (太平洋日光節約時間),以表示格式字串中的當地時區。 請注意,此字串會包含在結果字串中,而且包含當地時區字串的字串也會成功剖析。

using System;
using System.Globalization;

public class Example5
{
    public static void Main()
    {
        String[] formats = { "dd MMM yyyy hh:mm tt PST",
                           "dd MMM yyyy hh:mm tt PDT" };
        var dat = new DateTime(2016, 8, 18, 16, 50, 0);
        // Display the result string.
        Console.WriteLine(dat.ToString(formats[1]));

        // Parse a string.
        String value = "25 Dec 2016 12:00 pm PST";
        DateTime newDate;
        if (DateTime.TryParseExact(value, formats, null,
                                   DateTimeStyles.None, out newDate))
            Console.WriteLine(newDate);
        else
            Console.WriteLine("Unable to parse '{0}'", value);
    }
}
// The example displays the following output:
//       18 Aug 2016 04:50 PM PDT
//       12/25/2016 12:00:00 PM
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim formats() As String = {"dd MMM yyyy hh:mm tt PST",
                                    "dd MMM yyyy hh:mm tt PDT"}
        Dim dat As New Date(2016, 8, 18, 16, 50, 0)
        ' Display the result string. 
        Console.WriteLine(dat.ToString(formats(1)))

        ' Parse a string. 
        Dim value As String = "25 Dec 2016 12:00 pm PST"
        Dim newDate As Date
        If Date.TryParseExact(value, formats, Nothing,
                              DateTimeStyles.None, newDate) Then
            Console.WriteLine(newDate)
        Else
            Console.WriteLine("Unable to parse '{0}'", value)
        End If
    End Sub
End Module
' The example displays the following output:
'       18 Aug 2016 04:50 PM PDT
'       12/25/2016 12:00:00 PM

您可以使用兩種方式來指定將字元解譯為常值字元,而不是保留字元,以便包含在結果字串中,或在輸入字串中成功剖析:

下列範例包含常值字元 "pst" (太平洋標準時間),以表示格式字串中的當地時區。 由於 "s" 與 "t" 是自訂格式字串,因此必須逸出這兩個字元才能解譯為字元常值。

using System;
using System.Globalization;

public class Example3
{
    public static void Main()
    {
        String format = "dd MMM yyyy hh:mm tt p\\s\\t";
        var dat = new DateTime(2016, 8, 18, 16, 50, 0);
        // Display the result string.
        Console.WriteLine(dat.ToString(format));

        // Parse a string.
        String value = "25 Dec 2016 12:00 pm pst";
        DateTime newDate;
        if (DateTime.TryParseExact(value, format, null,
                                   DateTimeStyles.None, out newDate))
            Console.WriteLine(newDate);
        else
            Console.WriteLine("Unable to parse '{0}'", value);
    }
}
// The example displays the following output:
//       18 Aug 2016 04:50 PM pst
//       12/25/2016 12:00:00 PM
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim fmt As String = "dd MMM yyyy hh:mm tt p\s\t"
        Dim dat As New Date(2016, 8, 18, 16, 50, 0)
        ' Display the result string. 
        Console.WriteLine(dat.ToString(fmt))

        ' Parse a string. 
        Dim value As String = "25 Dec 2016 12:00 pm pst"
        Dim newDate As Date
        If Date.TryParseExact(value, fmt, Nothing,
                              DateTimeStyles.None, newDate) Then
            Console.WriteLine(newDate)
        Else
            Console.WriteLine("Unable to parse '{0}'", value)
        End If
    End Sub
End Module
' The example displays the following output:
'       18 Aug 2016 04:50 PM pst
'       12/25/2016 12:00:00 PM
  • 以雙引號或單引號括住整個常值字串。 下列範例類似上一個範例,不同之處在於 "pst" 會以雙引號括住,以表示整個分隔的字串都應該解譯為字元常值。
using System;
using System.Globalization;

public class Example6
{
    public static void Main()
    {
        String format = "dd MMM yyyy hh:mm tt \"pst\"";
        var dat = new DateTime(2016, 8, 18, 16, 50, 0);
        // Display the result string.
        Console.WriteLine(dat.ToString(format));

        // Parse a string.
        String value = "25 Dec 2016 12:00 pm pst";
        DateTime newDate;
        if (DateTime.TryParseExact(value, format, null,
                                   DateTimeStyles.None, out newDate))
            Console.WriteLine(newDate);
        else
            Console.WriteLine("Unable to parse '{0}'", value);
    }
}
// The example displays the following output:
//       18 Aug 2016 04:50 PM pst
//       12/25/2016 12:00:00 PM
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim fmt As String = "dd MMM yyyy hh:mm tt ""pst"""
        Dim dat As New Date(2016, 8, 18, 16, 50, 0)
        ' Display the result string. 
        Console.WriteLine(dat.ToString(fmt))

        ' Parse a string. 
        Dim value As String = "25 Dec 2016 12:00 pm pst"
        Dim newDate As Date
        If Date.TryParseExact(value, fmt, Nothing,
                              DateTimeStyles.None, newDate) Then
            Console.WriteLine(newDate)
        Else
            Console.WriteLine("Unable to parse '{0}'", value)
        End If
    End Sub
End Module
' The example displays the following output:
'       18 Aug 2016 04:50 PM pst
'       12/25/2016 12:00:00 PM

備註

使用單一自訂格式規範

自訂日期和時間格式字串是由兩個或多個字元所組成。 日期和時間格式化方法會將任何單一字元字串解譯為標準日期和時間格式字串。 如果這些方法無法將該字元辨認為有效的格式規範,則會擲回 FormatException。 例如,僅由規範 "h" 所組成的格式字串會解譯為標準日期和時間字串。 不過,在這種特殊情形下會擲回例外狀況,因為並沒有 "h" 標準日期和時間格式規範。

若要使用任何自訂日期和時間格式規範做為格式字串中的唯一規範 (也就是單獨使用 "d"、"f"、"F"、"g"、"h"、"H"、"K"、"m"、"M"、"s"、"t"、"y"、"z"、":" 或 "/" 自訂格式規範),請在規範之前或之後加上一個空格,或在單一自訂日期和時間規範之前加上一個百分比 ("%") 格式規範。

例如,"%h" 會解譯為自訂日期和時間格式字串,該字串會顯示由目前日期和時間值所表示的小時。 您也可以使用 " h" 或 "h " 格式字串,然而這會在結果字串中的小時旁邊加上空格。 下列範例示範這三個格式字串。

DateTime dat1 = new DateTime(2009, 6, 15, 13, 45, 0);

Console.WriteLine("'{0:%h}'", dat1);
Console.WriteLine("'{0: h}'", dat1);
Console.WriteLine("'{0:h }'", dat1);
// The example displays the following output:
//       '1'
//       ' 1'
//       '1 '
Dim dat1 As Date = #6/15/2009 1:45PM#

Console.WriteLine("'{0:%h}'", dat1)
Console.WriteLine("'{0: h}'", dat1)
Console.WriteLine("'{0:h }'", dat1)
' The example displays the following output:
'       '1'
'       ' 1'
'       '1 '

使用逸出字元

格式字串中的 "d"、"f"、"F"、"g"、"h"、"H"、"K"、"m"、"M"、"s"、"t"、"y"、"z"、":" 或 "/" 字元會解譯為自訂格式規範,而不是常值字元。 若要防止字元解譯為格式規範,您可以在字元前面加上反斜杠 (\),也就是逸出字元。 逸出字元表示接下來的字元是字元常值,應該原封不動地放入結果字串中。

若要在結果字串中加上反斜線,您必須再加上一個反斜線 (變成 \\),才能將反斜線解譯為常值。

注意

某些編譯器 (例如 C++ 和 C# 編譯器) 也可能會將單一反斜線字元解譯為逸出字元。 為了確保字串在格式化時能夠正確獲得解譯,您可以在 C# 中的字串前面加上逐字字串常值字元 (@ 字元),或在 C# 和 C++ 中的每個反斜線前面再加上一個反斜線字元。 下列 C# 範例示範這兩種做法。

下列範例會使用逸出字元,以避免格式化作業將 "h" 和 "m" 字元解譯為格式規範。

DateTime date = new DateTime(2009, 06, 15, 13, 45, 30, 90);
string fmt1 = "h \\h m \\m";
string fmt2 = @"h \h m \m";

Console.WriteLine("{0} ({1}) -> {2}", date, fmt1, date.ToString(fmt1));
Console.WriteLine("{0} ({1}) -> {2}", date, fmt2, date.ToString(fmt2));
// The example displays the following output:
//       6/15/2009 1:45:30 PM (h \h m \m) -> 1 h 45 m
//       6/15/2009 1:45:30 PM (h \h m \m) -> 1 h 45 m
Dim date1 As Date = #6/15/2009 13:45#
Dim fmt As String = "h \h m \m"

Console.WriteLine("{0} ({1}) -> {2}", date1, fmt, date1.ToString(fmt))
' The example displays the following output:
'       6/15/2009 1:45:00 PM (h \h m \m) -> 1 h 45 m      

控制台設定

[控制台] 中的 [地區及語言選項] 設定會影響格式化作業 (其中包含許多自訂日期和時間格式規範) 所產生的結果字串。 這些設定可用來初始化 DateTimeFormatInfo 與目前文化特性相關聯的物件,以提供用來控管格式設定的值。 使用不同設定的電腦會產生不同的結果字串。

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

DateTimeFormatInfo 屬性

格式會受到目前 對象的屬性所影響,而目前 DateTimeFormatInfo 文化特性是由目前文化特性隱含提供,或是由 IFormatProvider 叫用格式化之方法的 參數明確提供。 在 IFormatProvider 參數中,您應該指定表示文化特性的 CultureInfo 物件,指定或 DateTimeFormatInfo 物件。

許多自訂日期和時間格式規範所產生的結果字串,也取決於目前 DateTimeFormatInfo 物件的屬性。 您的應用程式可以變更對應的 DateTimeFormatInfo 屬性,藉此改變某些自訂日期和時間格式規範所產生的結果。 例如,"ddd" 格式規範會將 AbbreviatedDayNames 字串陣列中找到的縮寫星期幾名稱加入至結果字串。 同樣地,"MMMM" 格式規範會將 MonthNames 字串陣列中找到的完整月份名稱加到結果字串。

另請參閱