Cadeias de formato de data e hora personalizadas

Uma cadeia de formato de data e hora define a representação de texto de um DateTime valor ou DateTimeOffset que resulta de uma operação de formatação. Também pode definir a representação de um valor de data e hora que é necessário numa operação de análise para converter com êxito a cadeia numa data e hora. Uma cadeia de formato personalizado consiste num ou mais especificadores de formato de data e hora personalizados. Qualquer cadeia que não seja uma cadeia de formato de data e hora padrão é interpretada como uma cadeia de formato de data e hora personalizada.

Dica

Pode transferir o Utilitário de Formatação, uma aplicação de Windows Forms .NET Core que lhe permite aplicar cadeias de formato a valores numéricos ou de data e hora e apresenta a cadeia de resultados. O código fonte está disponível para C# e Visual Basic.

As cadeias de formato de data e hora personalizadas podem ser utilizadas com valores DateTime e DateTimeOffset .

Nota

Alguns dos exemplos de C# neste artigo são executados no Try.NET inline code runner e playground. Selecione o botão Executar para executar um exemplo numa janela interativa. Depois de executar o código, pode modificá-lo e executar o código modificado ao selecionar Executar novamente. O código modificado é executado na janela interativa ou, se a compilação falhar, a janela interativa apresenta todas as mensagens de erro do compilador C#.

O fuso horário local do Try.NET linha de código inline e playground é Hora Universal Coordenada ou UTC. Isto pode afetar o comportamento e a saída de exemplos que ilustram os DateTimetipos , DateTimeOffsete e TimeZoneInfo e os respetivos membros.

Nas operações de formatação, as cadeias de formato de data e hora personalizadas podem ser utilizadas com o ToString método de uma instância de data e hora ou com um método que suporte formatação composta. O exemplo seguinte ilustra ambas as utilizações.

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

Nas operações de análise, as cadeias de formato de data e hora personalizadas podem ser utilizadas com os DateTime.ParseExactmétodos , DateTime.TryParseExact, DateTimeOffset.ParseExacte DateTimeOffset.TryParseExact . Estes métodos requerem que uma cadeia de entrada esteja em conformidade com um padrão específico para que a operação de análise seja bem-sucedida. O exemplo seguinte ilustra uma chamada para o DateTimeOffset.ParseExact(String, String, IFormatProvider) método para analisar uma data que tem de incluir um dia, um mês e um ano de dois dígitos.

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.

A tabela seguinte descreve os especificadores de formato de data e hora personalizados e apresenta uma cadeia de resultado produzida por cada especificador de formato. Por predefinição, as cadeias de resultados refletem as convenções de formatação da cultura en-US. Se um especificador de formato específico produzir uma cadeia de resultado localizada, o exemplo também anota a cultura à qual a cadeia de resultado se aplica. Para obter mais informações sobre como utilizar cadeias de formato de data e hora personalizadas, consulte a secção Notas .

Especificador de formato Descrição Exemplos
"d" O dia do mês, de 1 a 31.

Mais informações: O Especificador de Formato Personalizado "d".
06-2009-01T13:45:30 -> 1

2009-06-15T13:45:30 -> 15
"dd" O dia do mês, de 01 a 31.

Mais informações: O Especificador de Formato Personalizado "dd".
06-2009-01T13:45:30 -> 01

2009-06-15T13:45:30 -> 15
"ddd" O nome abreviado do dia da semana.

Mais informações: O Especificador de Formato Personalizado "ddd".
2009-06-15T13:45:30 -> Mon (en-US)

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

06-2009-15T13:45:30 -> lun. (fr-FR)
"dddd" O nome completo do dia da semana.

Mais informações: O Especificador de Formato Personalizado "dddd".
06-2009-15T13:45:30 -> Segunda-feira (en-US)

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

2009-06-15T13:45:30 -> lundi (fr-FR)
"f" Os décimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "f".
06-2009-15T13:45:30.6170000 -> 6

2009-06-15T13:45:30.05 -> 0
"ff" Os centésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "ff".
06-2009-15T13:45:30.6170000 -> 61

06-2009-15T13:45:30.0050000 -> 00
"fff" Os milissegundos num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "fff".
15/6/2009 13:45:30.617 -> 617

15/06/2009 13:45:30.0005 -> 000
"ffff" Os dez milésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "ffff".
06-2009-15T13:45:30.6175000 -> 6175

06-2009-15T13:45:30.0000500 -> 0000
"fffff" Os cem milésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "fffff".
2009-06-15T13:45:30.6175400 -> 61754

15/06/2009 13:45:30.000005 -> 00000
"ffffff" Os milionésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "ffffff".
06-2009-15T13:45:30.6175420 -> 617542

06-2009-15T13:45:30.0000005 -> 000000
"fffffff" Os dez milionésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "fffffff".
06-2009-15T13:45:30.6175425 -> 6175425

06-2009-15T13:45:30.0001150 -> 0001150
"F" Se não for zero, as décimas de um segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "F".
06-2009-15T13:45:30.6170000 -> 6

06-2009-15T13:45:30.0500000 -> (sem saída)
"FF" Se não for zero, os centésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "FF".
06-2009-15T13:45:30.6170000 -> 61

06-2009-15T13:45:30.0050000 -> (sem saída)
"FFF" Se não for zero, os milissegundos num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "FFF".
06-2009-15T13:45:30.6170000 -> 617

06-2009-15T13:45:30.0005000 -> (sem saída)
"FFFF" Se não for zero, os dez milésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "FFFF".
06-2009-15T13:45:30.5275000 -> 5275

06-2009-15T13:45:30.0000500 -> (sem saída)
"FFFFF" Se não for zero, os cem milésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "FFFFF".
2009-06-15T13:45:30.6175400 -> 61754

06-2009-15T13:45:30.0000050 -> (sem saída)
"FFFFFF" Se não for zero, os milionésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "FFFFFF".
06-2009-15T13:45:30.6175420 -> 617542

06-2009-15T13:45:30.0000005 –> (sem saída)
"FFFFFFF" Se não for zero, os dez milionésimos de segundo num valor de data e hora.

Mais informações: O Especificador de Formato Personalizado "FFFFFFF".
06-2009-15T13:45:30.6175425 -> 6175425

06-2009-15T13:45:30.0001150 -> 000115
"g", "gg" O período ou a era.

Mais informações: O Especificador de Formato Personalizado "g" ou "gg".
06-2009-15T13:45:30.6170000 -> A.D.
"h" A hora, utilizando um relógio de 12 horas de 1 a 12.

Mais informações: O Especificador de Formato Personalizado "h".
06-2009-15T01:45:30 -> 1

2009-06-15T13:45:30 -> 1
"hh" A hora, utilizando um relógio de 12 horas de 01 a 12.

Mais informações: O Especificador de Formato Personalizado "hh".
06-2009-15T01:45:30 -> 01

06-2009-15T13:45:30 -> 01
"H" A hora, utilizando um relógio de 24 horas de 0 a 23.

Mais informações: O Especificador de Formato Personalizado "H".
06-2009-15T01:45:30 -> 1

06-2009-15T13:45:30 -> 13
"HH" A hora, utilizando um relógio de 24 horas de 00 a 23.

Mais informações: O Especificador de Formato Personalizado "HH".
06-2009-15T01:45:30 -> 01

06-2009-15T13:45:30 -> 13
"K" Informações de fuso horário.

Mais informações: O Especificador de Formato Personalizado "K".
Com DateTime valores:

2009-06-15T13:45:30, Tipo Não Especificado ->

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

2009-06-15T13:45:30, Kind Local -> -07:00 (depende das definições do computador local)

Com DateTimeOffset valores:

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

06-2009-15T08:45:30+00:00 --> +00:00
"m" O minuto, de 0 a 59.

Mais informações: O Especificador de Formato Personalizado "m".
06-2009-15T01:09:30 -> 9

2009-06-15T13:29:30 -> 29
"mm" O minuto, de 00 a 59.

Mais informações: O Especificador de Formato Personalizado "mm".
06-2009-15T01:09:30 -> 09

06-2009-15T01:45:30 -> 45
"M" O mês, de 1 a 12.

Mais informações: O Especificador de Formato Personalizado "M".
06-2009-15T13:45:30 -> 6
"MM" O mês, de 01 a 12.

Mais informações: O Especificador de Formato Personalizado "MM".
06-2009-15T13:45:30 -> 06
"MMM" O nome abreviado do mês.

Mais informações: O Especificador de Formato Personalizado "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" O nome completo do mês.

Mais informações: O Especificador de Formato Personalizado "MMMM".
06-2009-15T13:45:30 -> Junho (en-US)

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

2009-06-15T13:45:30 -> uJuni (zu-ZA)
"s" O segundo, de 0 a 59.

Mais informações: O Especificador de Formato Personalizado "s".
06-2009-15T13:45:09 -> 9
"ss" O segundo, de 00 a 59.

Mais informações: O Especificador de Formato Personalizado "ss".
06-2009-15T13:45:09 -> 09
"t" O primeiro caráter do designador AM/PM.

Mais informações: O Especificador de Formato Personalizado "t".
06-2009-15T13:45:30 -> P (en-US)

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

2009-06-15T13:45:30 -> (fr-FR)
"tt" O designador AM/PM.

Mais informações: O Especificador de Formato Personalizado "tt".
2009-06-15T13:45:30 -> PM (en-US)

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

2009-06-15T13:45:30 -> (fr-FR)
"y" O ano, de 0 a 99.

Mais informações: O Especificador de Formato Personalizado "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" O ano, de 00 a 99.

Mais informações: O Especificador de Formato Personalizado "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" O ano, com um mínimo de três dígitos.

Mais informações: O Especificador de Formato Personalizado "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" O ano como um número de quatro dígitos.

Mais informações: O Especificador de Formato Personalizado "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
"yyyyyy" O ano como um número de cinco dígitos.

Mais informações: O Especificador de Formato Personalizado "yyyy".
0001-01-01T00:00:00 -> 00001

06-2009-15T13:45:30 -> 02009
"z" Deslocamento de horas da UTC, sem zeros à esquerda.

Mais informações: O Especificador de Formato Personalizado "z".
2009-06-15T13:45:30-07:00 -> -7
"zz" Deslocamento de horas de UTC, com um zero à esquerda para um valor de um dígito.

Mais informações: O Especificador de Formato Personalizado "zz".
06-2009-15T13:45:30-07:00 -> -07
"zzz" Deslocamento de horas e minutos a partir da UTC.

Mais informações: O Especificador de Formato Personalizado "zzz".
2009-06-15T13:45:30-07:00 -> -07:00
":" O separador de tempo.

Mais informações: O Especificador de Formato Personalizado ":".
2009-06-15T13:45:30 -> : (en-US)

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

2009-06-15T13:45:30 -> : (ja-JP)
"/" O separador de data.

Mais informações: o especificador de formato personalizado "/".
2009-06-15T13:45:30 -> / (en-US)

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

2009-06-15T13:45:30 -> . (tr-TR)
"cadeia"

'cadeia'
Delimitador de cadeia literal.

Mais informações: Literais de carateres.
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
% Define o seguinte caráter como um especificador de formato personalizado.

Mais informações:Utilizar Especificadores de Formato Personalizado Único.
2009-06-15T13:45:30 (%h) -> 1
\ O caráter de fuga.

Mais informações: Literais de carateres e Utilizar o Caráter de Escape.
2009-06-15T13:45:30 (h \h) -> 1 h
Qualquer outro caráter O caráter é copiado para a cadeia de resultados inalterada.

Mais informações: Literais de carateres.
2009-06-15T01:45:30 (arr hh:mm t) -> arr 01:45 A

As secções seguintes fornecem informações adicionais sobre cada especificador de formato de data e hora personalizado. Salvo indicação em contrário, cada especificador produz uma representação de cadeia idêntica, independentemente de ser utilizada com um DateTime valor ou um DateTimeOffset valor.

Especificador de formato "d" do dia

O especificador de formato personalizado "d"

O especificador de formato personalizado "d" representa o dia do mês como um número de 1 a 31. Um dia de um dígito é formatado sem um zero à esquerda.

Se o especificador de formato "d" for utilizado sem outros especificadores de formato personalizado, este será interpretado como o especificador de data e hora padrão "d". Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "d" em várias cadeias de formato.

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                                                

Voltar à tabela

O especificador de formato personalizado "dd"

A cadeia de formato personalizado "dd" representa o dia do mês como um número de 01 a 31. Um dia de um dígito é formatado com um zero à esquerda.

O exemplo seguinte inclui o especificador de formato personalizado "dd" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "ddd"

O especificador de formato personalizado "ddd" representa o nome abreviado do dia da semana. O nome abreviado localizado do dia da semana é obtido a DateTimeFormatInfo.AbbreviatedDayNames partir da propriedade da cultura atual ou especificada.

O exemplo seguinte inclui o especificador de formato personalizado "ddd" numa cadeia de formato personalizado.

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                                                

Voltar à tabela

O especificador de formato personalizado "dddd"

O especificador de formato personalizado "dddd" (mais qualquer número de especificadores "d" adicionais) representa o nome completo do dia da semana. O nome localizado do dia da semana é obtido a DateTimeFormatInfo.DayNames partir da propriedade da cultura atual ou especificada.

O exemplo seguinte inclui o especificador de formato personalizado "dddd" numa cadeia de formato personalizado.

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                                          

Voltar à tabela

Especificador de fração "f" segundos minúsculos

O especificador de formato personalizado "f"

O especificador de formato personalizado "f" representa o dígito mais significativo da fração de segundos; ou seja, representa as décimas de um segundo num valor de data e hora.

Se o especificador de formato "f" for utilizado sem outros especificadores de formato, será interpretado como o especificador de data e hora padrão "f". Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

Quando utiliza os especificadores de formato "f" como parte de uma cadeia de formato fornecida ao ParseExactTryParseExact, , ParseExactou TryParseExact método, o número de especificadores de formato "f" indica o número de dígitos mais significativos da fração de segundos que tem de estar presente para analisar com êxito a cadeia.

O exemplo seguinte inclui o especificador de formato personalizado "f" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "ff"

O especificador de formato personalizado "ff" representa os dois dígitos mais significativos da fração de segundos; ou seja, representa as centésimos de segundo num valor de data e hora.

O exemplo seguinte inclui o especificador de formato personalizado "ff" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "fff"

O especificador de formato personalizado "fff" representa os três dígitos mais significativos da fração de segundos; ou seja, representa os milissegundos num valor de data e hora.

O exemplo seguinte inclui o especificador de formato personalizado "fff" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "ffff"

O especificador de formato personalizado "ffff" representa os quatro dígitos mais significativos da fração de segundos; ou seja, representa os dez milésimos de segundo num valor de data e hora.

Embora seja possível apresentar os dez milésimos de um segundo componente de um valor de tempo, esse valor pode não ser significativo. A precisão dos valores de data e hora depende da resolução do relógio do sistema. Nos sistemas operativos Windows NT versão 3.5 (e posterior) e Windows Vista, a resolução do relógio é de aproximadamente 10 a 15 milissegundos.

Voltar à tabela

O especificador de formato personalizado "fffff"

O especificador de formato personalizado "fffff" representa os cinco dígitos mais significativos da fração de segundos; ou seja, representa os centésimos milésimos de segundo num valor de data e hora.

Embora seja possível apresentar os centésimos milésimos de um segundo componente de um valor de tempo, esse valor pode não ser significativo. A precisão dos valores de data e hora depende da resolução do relógio do sistema. Nos sistemas operativos Windows NT 3.5 (e posterior) e Windows Vista, a resolução do relógio é de aproximadamente 10 a 15 milissegundos.

Voltar à tabela

O especificador de formato personalizado "ffffff"

O especificador de formato personalizado "ffffff" representa os seis dígitos mais significativos da fração de segundos; ou seja, representa os milionésimos de segundo num valor de data e hora.

Embora seja possível apresentar os milionésimos de um segundo componente de um valor de tempo, esse valor pode não ser significativo. A precisão dos valores de data e hora depende da resolução do relógio do sistema. Nos sistemas operativos Windows NT 3.5 (e posterior) e Windows Vista, a resolução do relógio é de aproximadamente 10 a 15 milissegundos.

Voltar à tabela

O especificador de formato personalizado "fffffff"

O especificador de formato personalizado "fffffff" representa os sete dígitos mais significativos da fração de segundos; ou seja, representa os dez milionésimos de segundo num valor de data e hora.

Embora seja possível apresentar os dez milionésimos de um segundo componente de um valor de tempo, esse valor pode não ser significativo. A precisão dos valores de data e hora depende da resolução do relógio do sistema. Nos sistemas operativos Windows NT 3.5 (e posterior) e Windows Vista, a resolução do relógio é de aproximadamente 10 a 15 milissegundos.

Voltar à tabela

Especificador da fração "F" dos segundos maiúsculas

O especificador de formato personalizado "F"

O especificador de formato personalizado "F" representa o dígito mais significativo da fração de segundos; ou seja, representa as décimas de um segundo num valor de data e hora. Nada é apresentado se o dígito for zero e o ponto decimal que se segue ao número de segundos também não for apresentado.

Se o especificador de formato "F" for utilizado sem outros especificadores de formato, este será interpretado como o especificador de data e hora padrão "F". Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O número de especificadores de formato "F" utilizados com o ParseExactmétodo , TryParseExact, ParseExactou TryParseExact indica o número máximo de dígitos mais significativos da fração de segundos que podem estar presentes para analisar com êxito a cadeia.

O exemplo seguinte inclui o especificador de formato personalizado "F" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "FF"

O especificador de formato personalizado "FF" representa os dois dígitos mais significativos da fração de segundos; ou seja, representa as centésimos de segundo num valor de data e hora. Os zeros à direita não são apresentados. Nada é apresentado se os dois dígitos significativos forem zero e, nesse caso, o ponto decimal que se segue ao número de segundos também não é apresentado.

O exemplo seguinte inclui o especificador de formato personalizado "FF" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "FFF"

O especificador de formato personalizado "FFF" representa os três dígitos mais significativos da fração de segundos; ou seja, representa os milissegundos num valor de data e hora. Os zeros à direita não são apresentados. Nada é apresentado se os três dígitos significativos forem zero e, nesse caso, o ponto decimal que se segue ao número de segundos também não é apresentado.

O exemplo seguinte inclui o especificador de formato personalizado "FFF" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "FFFF"

O especificador de formato personalizado "FFFF" representa os quatro dígitos mais significativos da fração de segundos; ou seja, representa os dez milésimos de segundo num valor de data e hora. Os zeros à direita não são apresentados. Nada é apresentado se os quatro dígitos significativos forem zero e, nesse caso, o ponto decimal que se segue ao número de segundos também não for apresentado.

Embora seja possível apresentar os dez milésimos de um segundo componente de um valor de tempo, esse valor pode não ser significativo. A precisão dos valores de data e hora depende da resolução do relógio do sistema. Nos sistemas operativos Windows NT 3.5 (e posterior) e Windows Vista, a resolução do relógio é de aproximadamente 10 a 15 milissegundos.

Voltar à tabela

O especificador de formato personalizado "FFFFF"

O especificador de formato personalizado "FFFFF" representa os cinco dígitos mais significativos da fração de segundos; ou seja, representa os centésimos milésimos de segundo num valor de data e hora. Os zeros à direita não são apresentados. Nada é apresentado se os cinco dígitos significativos forem zero e, nesse caso, o ponto decimal que se segue ao número de segundos também não for apresentado.

Embora seja possível apresentar os centésimos milésimos de um segundo componente de um valor de tempo, esse valor pode não ser significativo. A precisão dos valores de data e hora depende da resolução do relógio do sistema. Nos sistemas operativos Windows NT 3.5 (e posterior) e Windows Vista, a resolução do relógio é de aproximadamente 10 a 15 milissegundos.

Voltar à tabela

O especificador de formato personalizado "FFFFFF"

O especificador de formato personalizado "FFFFFF" representa os seis dígitos mais significativos da fração de segundos; ou seja, representa os milionésimos de segundo num valor de data e hora. Os zeros à direita não são apresentados. Nada é apresentado se os seis dígitos significativos forem zero e, nesse caso, o ponto decimal que se segue ao número de segundos também não é apresentado.

Embora seja possível apresentar os milionésimos de um segundo componente de um valor de tempo, esse valor pode não ser significativo. A precisão dos valores de data e hora depende da resolução do relógio do sistema. Nos sistemas operativos Windows NT 3.5 (e posterior) e Windows Vista, a resolução do relógio é de aproximadamente 10 a 15 milissegundos.

Voltar à tabela

O especificador de formato personalizado "FFFFFFF"

O especificador de formato personalizado "FFFFFFF" representa os sete dígitos mais significativos da fração de segundos; ou seja, representa os dez milionésimos de segundo num valor de data e hora. Os zeros à direita não são apresentados. Nada é apresentado se os sete dígitos significativos forem zero e, nesse caso, o ponto decimal que se segue ao número de segundos também não for apresentado.

Embora seja possível apresentar os dez milionésimos de um segundo componente de um valor de tempo, esse valor pode não ser significativo. A precisão dos valores de data e hora depende da resolução do relógio do sistema. Nos sistemas operativos Windows NT 3.5 (e posterior) e Windows Vista, a resolução do relógio é de aproximadamente 10 a 15 milissegundos.

Voltar à tabela

Era "g" format specifier

O especificador de formato personalizado "g" ou "gg"

Os especificadores de formatos personalizados "g" ou "gg" (além de qualquer número de especificadores "g" adicionais) representam o período ou a era, como a D.A. A operação de formatação ignora este especificador se a data a formatar não tiver uma cadeia de período ou era associada.

Se o especificador de formato "g" for utilizado sem outros especificadores de formato personalizado, este será interpretado como o especificador de data e hora padrão "g". Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "g" numa cadeia de formato personalizado.

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.

Voltar à tabela

Especificador do formato "h" da hora minúscula

O especificador de formato personalizado "h"

O especificador de formato personalizado "h" representa a hora como um número de 1 a 12; ou seja, a hora é representada por um relógio de 12 horas que conta as horas inteiras desde a meia-noite ou meio-dia. Uma hora depois da meia-noite é indistinguível da mesma hora depois do meio-dia. A hora não é arredondada e uma hora de um dígito é formatada sem um zero à esquerda. Por exemplo, dada a hora das 5:43 da manhã ou da tarde, este especificador de formato personalizado apresenta "5".

Se o especificador de formato "h" for utilizado sem outros especificadores de formato personalizado, este é interpretado como um especificador de formato de data e hora padrão e lança um FormatException. Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "h" numa cadeia de formato personalizado.

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 µ

Voltar à tabela

O especificador de formato personalizado "hh"

O especificador de formato personalizado "hh" (mais qualquer número de especificadores "h" adicionais) representa a hora como um número de 01 a 12; ou seja, a hora é representada por um relógio de 12 horas que conta as horas inteiras desde a meia-noite ou meio-dia. Uma hora depois da meia-noite é indistinguível da mesma hora depois do meio-dia. A hora não é arredondada e uma hora de um dígito é formatada com um zero à esquerda. Por exemplo, dada a hora das 5:43 da manhã ou da tarde, este especificador de formato apresenta "05".

O exemplo seguinte inclui o especificador de formato personalizado "hh" numa cadeia de formato personalizado.

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.

Voltar à tabela

Especificador do formato "H" da hora em maiúscula

O especificador de formato personalizado "H"

O especificador de formato personalizado "H" representa a hora como um número de 0 a 23; ou seja, a hora é representada por um relógio de 24 horas baseado em zero que conta as horas desde a meia-noite. Uma hora de um dígito é formatada sem um zero à esquerda.

Se o especificador de formato "H" for utilizado sem outros especificadores de formato personalizado, este é interpretado como um especificador de formato de data e hora padrão e lança um FormatException. Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "H" numa cadeia de formato personalizado.

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                        

Voltar à tabela

O especificador de formato personalizado "HH"

O especificador de formato personalizado "HH" (mais qualquer número de especificadores "H" adicionais) representa a hora como um número de 00 a 23; ou seja, a hora é representada por um relógio de 24 horas baseado em zero que conta as horas desde a meia-noite. Uma hora de um dígito é formatada com um zero à esquerda.

O exemplo seguinte inclui o especificador de formato personalizado "HH" numa cadeia de formato personalizado.

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                        

Voltar à tabela

Especificador do formato "K" do fuso horário

O especificador de formato personalizado "K"

O especificador de formato personalizado "K" representa as informações de fuso horário de um valor de data e hora. Quando este especificador de formato é utilizado com DateTime valores, a cadeia de resultados é definida pelo valor da DateTime.Kind propriedade:

  • Para o fuso horário local (um DateTime.Kind valor de propriedade de DateTimeKind.Local), este especificador produz uma cadeia de resultados que contém o desvio local da Hora Universal Coordenada (UTC); por exemplo, "-07:00".

  • Para uma hora UTC (um DateTime.Kind valor de propriedade de ), a cadeia de DateTimeKind.Utcresultados inclui um caráter "Z" para representar uma data UTC.

  • Por uma hora a partir de um fuso horário não especificado (uma hora cuja DateTime.Kind propriedade é igual DateTimeKind.Unspecified), o resultado é equivalente a String.Empty.

Para DateTimeOffset valores, o especificador de formato "K" é equivalente ao especificador de formato "zzz" e produz uma cadeia de resultados que contém o DateTimeOffset desvio do valor da UTC.

Se o especificador de formato "K" for utilizado sem outros especificadores de formato personalizado, este é interpretado como um especificador de formato de data e hora padrão e lança um FormatException. Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte apresenta a cadeia que resulta da utilização do especificador de formato personalizado "K" com vários DateTime valores e DateTimeOffset num sistema no Fuso Horário do Pacífico dos EUA.

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                        

Voltar à tabela

Especificador de formato "m" de minuto

O especificador de formato personalizado "m"

O especificador de formato personalizado "m" representa o minuto como um número de 0 a 59. O minuto representa minutos inteiros que passaram desde a última hora. Um minuto de um dígito é formatado sem um zero à esquerda.

Se o especificador de formato "m" for utilizado sem outros especificadores de formato personalizado, este será interpretado como o especificador de data e hora padrão "m". Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "m" numa cadeia de formato personalizado.

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 µ

Voltar à tabela

O especificador de formato personalizado "mm"

O especificador de formato personalizado "mm" (mais qualquer número de especificadores "m" adicionais) representa o minuto como um número de 00 a 59. O minuto representa minutos inteiros que passaram desde a última hora. Um minuto de um dígito é formatado com um zero à esquerda.

O exemplo seguinte inclui o especificador de formato personalizado "mm" numa cadeia de formato personalizado.

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.

Voltar à tabela

Especificador do formato "M" do mês

O especificador de formato personalizado "M"

O especificador de formato personalizado "M" representa o mês como um número de 1 a 12 (ou de 1 a 13 para calendários com 13 meses). Um mês de um dígito é formatado sem um zero à esquerda.

Se o especificador de formato "M" for utilizado sem outros especificadores de formato personalizado, este será interpretado como o especificador de data e hora padrão "M". Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "M" numa cadeia de formato personalizado.

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                       

Voltar à tabela

O especificador de formato personalizado "MM"

O especificador de formato personalizado "MM" representa o mês como um número de 01 a 12 (ou de 1 a 13 para calendários com 13 meses). Um mês de um dígito é formatado com um zero à esquerda.

O exemplo seguinte inclui o especificador de formato personalizado "MM" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "MMM"

O especificador de formato personalizado "MMM" representa o nome abreviado do mês. O nome abreviado localizado do mês é obtido a DateTimeFormatInfo.AbbreviatedMonthNames partir da propriedade da cultura atual ou especificada.

O exemplo seguinte inclui o especificador de formato personalizado "MMM" numa cadeia de formato personalizado.

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                                                

Voltar à tabela

O especificador de formato personalizado "MMMM"

O especificador de formato personalizado "MMMM" representa o nome completo do mês. O nome localizado do mês é obtido a DateTimeFormatInfo.MonthNames partir da propriedade da cultura atual ou especificada.

O exemplo seguinte inclui o especificador de formato personalizado "MMMM" numa cadeia de formato personalizado.

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                                          

Voltar à tabela

Especificador de formato "s" de segundos

O especificador de formato personalizado "s"

O especificador de formato personalizado "s" representa os segundos como um número de 0 a 59. O resultado representa segundos inteiros que passaram desde o último minuto. Um segundo de um dígito é formatado sem um zero à esquerda.

Se o especificador de formato "s" for utilizado sem outros especificadores de formato personalizado, este será interpretado como o especificador de data e hora padrão "s". Para obter mais informações sobre como utilizar um único especificador de formato, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "s" numa cadeia de formato personalizado.

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 µ

Voltar à tabela

O especificador de formato personalizado "ss"

O especificador de formato personalizado "ss" (mais qualquer número de especificadores "s" adicionais) representa os segundos como um número de 00 a 59. O resultado representa segundos inteiros que passaram desde o último minuto. Um segundo de um dígito é formatado com um zero à esquerda.

O exemplo seguinte inclui o especificador de formato personalizado "ss" numa cadeia de formato personalizado.

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.

Voltar à tabela

Especificador do formato Meridiem "t"

O especificador de formato personalizado "t"

O especificador de formato personalizado "t" representa o primeiro caráter do designador AM/PM. O designador localizado adequado é obtido a DateTimeFormatInfo.AMDesignator partir da propriedade ou DateTimeFormatInfo.PMDesignator da cultura atual ou específica. O designador AM é utilizado sempre entre 0:00:00 (meia-noite) e 11:59:59.999. O designador pm é utilizado para todos os momentos das 12:00:00 (meio-dia) às 23:59:59.999.

Se o especificador de formato "t" for utilizado sem outros especificadores de formato personalizado, será interpretado como o especificador de formato de data e hora padrão "t". Para obter mais informações sobre como utilizar um especificador de formato único, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "t" numa cadeia de formato personalizado.

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 µ

Voltar à tabela

O especificador de formato personalizado "tt"

O especificador de formato personalizado "tt" (mais qualquer número de especificadores "t" adicionais) representa todo o designador AM/PM. O designador localizado adequado é obtido a DateTimeFormatInfo.AMDesignator partir da propriedade ou DateTimeFormatInfo.PMDesignator da cultura atual ou específica. O designador AM é utilizado sempre entre 0:00:00 (meia-noite) e 11:59:59.999. O designador pm é utilizado para todos os momentos das 12:00:00 (meio-dia) às 23:59:59.999.

Certifique-se de que utiliza o especificador "tt" para idiomas para os quais é necessário manter a distinção entre AM e PM. Um exemplo é japonês, para o qual os designadores AM e PM diferem no segundo caráter em vez do primeiro caráter.

O exemplo seguinte inclui o especificador de formato personalizado "tt" numa cadeia de formato personalizado.

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.

Voltar à tabela

Especificador do formato "y" do ano

O especificador de formato personalizado "y"

O especificador de formato personalizado "y" representa o ano como um número de um dígito ou dois dígitos. Se o ano tiver mais de dois dígitos, só serão apresentados os dois dígitos de ordem baixa no resultado. Se o primeiro dígito de um ano de dois dígitos começar com um zero (por exemplo, 2008), o número é formatado sem um zero à esquerda.

Se o especificador de formato "y" for utilizado sem outros especificadores de formato personalizado, será interpretado como o especificador de formato de data e hora padrão "y". Para obter mais informações sobre como utilizar um especificador de formato único, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "y" numa cadeia de formato personalizado.

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      

Voltar à tabela

O especificador de formato personalizado "yy"

O especificador de formato personalizado "yy" representa o ano como um número de dois dígitos. Se o ano tiver mais de dois dígitos, só serão apresentados os dois dígitos de ordem baixa no resultado. Se o ano de dois dígitos tiver menos de dois dígitos significativos, o número é acolchoado com zeros à esquerda para produzir dois dígitos.

Numa operação de análise, um ano de dois dígitos que é analisado com o especificador de formato personalizado "yy" é interpretado com base na Calendar.TwoDigitYearMax propriedade do calendário atual do fornecedor de formato. O exemplo seguinte analisa a representação de cadeia de carateres de uma data que tem um ano de dois dígitos ao utilizar o calendário gregoriano predefinido da cultura en-US, que, neste caso, é a cultura atual. Em seguida, altera o objeto da CultureInfo cultura atual para utilizar um GregorianCalendar objeto cuja TwoDigitYearMax propriedade tenha sido modificada.

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

O exemplo seguinte inclui o especificador de formato personalizado "yy" numa cadeia de formato personalizado.

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      

Voltar à tabela

O especificador de formato personalizado "yyy"

O especificador de formato personalizado "aaaa" representa o ano com um mínimo de três dígitos. Se o ano tiver mais de três dígitos significativos, estes serão incluídos na cadeia de resultados. Se o ano tiver menos de três dígitos, o número é acolchoado com zeros à esquerda para produzir três dígitos.

Nota

Para o calendário tailandês budista, que pode ter cinco dígitos, este especificador de formato apresenta todos os dígitos significativos.

O exemplo seguinte inclui o especificador de formato personalizado "yyy" numa cadeia de formato personalizado.

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      

Voltar à tabela

O especificador de formato personalizado "aaaa"

O especificador de formato personalizado "aaaa" representa o ano com um mínimo de quatro dígitos. Se o ano tiver mais de quatro dígitos significativos, estes serão incluídos na cadeia de resultados. Se o ano tiver menos de quatro dígitos, o número é acolchoado com zeros à esquerda para produzir quatro dígitos.

Nota

Para o calendário tailandês budista, que pode ter cinco dígitos, este especificador de formato apresenta um mínimo de quatro dígitos.

O exemplo seguinte inclui o especificador de formato personalizado "aaaa" numa cadeia de formato personalizado.

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      

Voltar à tabela

O especificador de formato personalizado "aaaa"

O especificador de formato personalizado "aaaa" (mais qualquer número de especificadores "y" adicionais) representa o ano com um mínimo de cinco dígitos. Se o ano tiver mais de cinco dígitos significativos, estes serão incluídos na cadeia de resultados. Se o ano tiver menos de cinco dígitos, o número é acolchoado com zeros à esquerda para produzir cinco dígitos.

Se existirem especificadores "y" adicionais, o número é preenchido com o número de zeros à esquerda necessários para produzir o número de especificadores "y".

O exemplo seguinte inclui o especificador de formato personalizado "aaaa" numa cadeia de formato personalizado.

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      

Voltar à tabela

Desfasar o especificador de formato "z"

O especificador de formato personalizado "z"

Com DateTime os valores, o especificador de formato personalizado "z" representa o desvio assinado do fuso horário especificado a partir da Hora Universal Coordenada (UTC), medido em horas. O deslocamento é sempre apresentado com um sinal à esquerda. Um sinal de adição (+) indica horas antes da UTC e um sinal de subtração (-) indica horas atrás de UTC. Um deslocamento de um dígito é formatado sem um zero à esquerda.

A tabela seguinte mostra como o valor de deslocamento é alterado consoante DateTimeKind.

DateTimeKind valor Valor de deslocamento
Local O desvio assinado do fuso horário do sistema operativo local a partir de UTC.
Unspecified O desvio assinado do fuso horário do sistema operativo local a partir de UTC.
Utc +0 em .NET Core e .NET 5+.

No .NET Framework, o desvio assinado do fuso horário do sistema operativo local a partir de UTC.

Com DateTimeOffset os valores, este especificador de formato representa o DateTimeOffset desvio do valor de UTC em horas.

Se o especificador de formato "z" for utilizado sem outros especificadores de formato personalizado, é interpretado como um especificador de formato de data e hora padrão e lança um FormatException. Para obter mais informações sobre como utilizar um especificador de formato único, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

O exemplo seguinte inclui o especificador de formato personalizado "z" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "zz"

Com DateTime os valores, o especificador de formato personalizado "zz" representa o desvio assinado do fuso horário especificado a partir de UTC, medido em horas. O deslocamento é sempre apresentado com um sinal à esquerda. Um sinal de adição (+) indica horas antes da UTC e um sinal de subtração (-) indica horas atrás de UTC. Um deslocamento de um dígito é formatado com um zero à esquerda.

A tabela seguinte mostra como o valor de deslocamento é alterado consoante DateTimeKind.

DateTimeKind valor Valor de deslocamento
Local O desvio assinado do fuso horário do sistema operativo local a partir de UTC.
Unspecified O desvio assinado do fuso horário do sistema operativo local a partir de UTC.
Utc +00 em .NET Core e .NET 5+.

No .NET Framework, o desvio assinado do fuso horário do sistema operativo local a partir de UTC.

Com DateTimeOffset os valores, este especificador de formato representa o DateTimeOffset desvio do valor de UTC em horas.

O exemplo seguinte inclui o especificador de formato personalizado "zz" numa cadeia de formato personalizado.

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

Voltar à tabela

O especificador de formato personalizado "zzz"

Com DateTime os valores, o especificador de formato personalizado "zzz" representa o desvio assinado do fuso horário especificado a partir de UTC, medido em horas e minutos. O deslocamento é sempre apresentado com um sinal à esquerda. Um sinal de adição (+) indica horas antes da UTC e um sinal de subtração (-) indica horas atrás de UTC. Um deslocamento de um dígito é formatado com um zero à esquerda.

A tabela seguinte mostra como o valor de deslocamento é alterado consoante DateTimeKind.

DateTimeKind valor Valor de deslocamento
Local O desvio assinado do fuso horário do sistema operativo local a partir de UTC.
Unspecified O desvio assinado do fuso horário do sistema operativo local a partir de UTC.
Utc +00:00 em .NET Core e .NET 5+.

No .NET Framework, o desvio assinado do fuso horário do sistema operativo local a partir de UTC.

Com DateTimeOffset os valores, este especificador de formato representa o DateTimeOffset desvio do valor de UTC em horas e minutos.

O exemplo seguinte inclui o especificador de formato personalizado "zzz" numa cadeia de formato personalizado.

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

Voltar à tabela

Especificadores de separador de data e hora

O especificador de formato personalizado ":"

O especificador de formato personalizado ":" representa o separador de tempo, que é utilizado para diferenciar horas, minutos e segundos. O separador de tempo localizado adequado é obtido a DateTimeFormatInfo.TimeSeparator partir da propriedade da cultura atual ou especificada.

Nota

Para alterar o separador de hora de uma cadeia de data e hora específica, especifique o caráter de separador num delimitador de cadeia literal. Por exemplo, a cadeia de formato hh'_'dd'_'ss personalizado produz uma cadeia de resultado na qual "_" (um caráter de sublinhado) é sempre utilizado como separador de tempo. Para alterar o separador de tempo para todas as datas de uma cultura, altere o valor da DateTimeFormatInfo.TimeSeparator propriedade da cultura atual ou instancie um DateTimeFormatInfo objeto, atribua o caráter à respetiva TimeSeparator propriedade e chame uma sobrecarga do método de formatação que inclui um IFormatProvider parâmetro.

Se o especificador de formato ":" for utilizado sem outros especificadores de formato personalizado, será interpretado como um especificador de formato de data e hora padrão e emitirá um FormatException. Para obter mais informações sobre como utilizar um especificador de formato único, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

Voltar à tabela

O especificador de formato personalizado "/"

O especificador de formato personalizado "/" representa o separador de data, que é utilizado para diferenciar anos, meses e dias. O separador de data localizado adequado é obtido a DateTimeFormatInfo.DateSeparator partir da propriedade da cultura atual ou especificada.

Nota

Para alterar o separador de data para uma determinada cadeia de data e hora, especifique o caráter separador dentro de um delimitador de cadeia literal. Por exemplo, a cadeia de formato mm'/'dd'/'yyyy personalizado produz uma cadeia de resultado na qual "/" é sempre utilizado como separador de data. Para alterar o separador de data para todas as datas de uma cultura, altere o valor da DateTimeFormatInfo.DateSeparator propriedade da cultura atual ou instancie um DateTimeFormatInfo objeto, atribua o caráter à respetiva DateSeparator propriedade e chame uma sobrecarga do método de formatação que inclui um IFormatProvider parâmetro.

Se o especificador de formato "/" for utilizado sem outros especificadores de formato personalizado, é interpretado como um especificador de formato de data e hora padrão e lança um FormatException. Para obter mais informações sobre como utilizar um especificador de formato único, consulte Utilizar Especificadores de Formato Personalizado Único mais à frente neste artigo.

Voltar à tabela

Literais de carateres

Os seguintes carateres numa cadeia de formato de data e hora personalizada são reservados e são sempre interpretados como carateres de formatação ou, no caso de ", ', /e \, como carateres especiais.

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

Todos os outros carateres são sempre interpretados como literais de carateres e, numa operação de formatação, são incluídos na cadeia de resultado inalteradas. Numa operação de análise, têm de corresponder exatamente aos carateres na cadeia de entrada; a comparação é sensível às maiúsculas e minúsculas.

O exemplo seguinte inclui os carateres literais "PST" (para a Hora Padrão do Pacífico) e "PDT" (para a Hora de Verão do Pacífico) para representar o fuso horário local numa cadeia de formato. Tenha em atenção que a cadeia está incluída na cadeia de resultado e que uma cadeia que inclui a cadeia de fuso horário local também é analisada com êxito.

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

Existem duas formas de indicar que os carateres devem ser interpretados como carateres literais e não como carateres de reserva, para que possam ser incluídos numa cadeia de resultado ou analisados com êxito numa cadeia de entrada:

O exemplo seguinte inclui os carateres literais "pst" (para a hora Padrão do Pacífico) para representar o fuso horário local numa cadeia de formato. Uma vez que "s" e "t" são cadeias de formato personalizado, ambos os carateres têm de ser escapados para serem interpretados como literais de carateres.

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
  • Ao colocar toda a cadeia literal entre aspas ou apóstrofos. O exemplo seguinte é como o anterior, exceto que "pst" está entre aspas para indicar que toda a cadeia delimitada deve ser interpretada como literal de carateres.
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

Notas

Utilizar especificadores de formato personalizado único

Uma cadeia de formato de data e hora personalizada consiste em dois ou mais carateres. Os métodos de formatação de data e hora interpretam qualquer cadeia de carateres únicos como uma cadeia de formato de data e hora padrão. Se não reconhecerem o caráter como um especificador de formato válido, lançam um FormatException. Por exemplo, uma cadeia de formato que consiste apenas no especificador "h" é interpretada como uma cadeia de formato de data e hora padrão. No entanto, neste caso específico, é emitida uma exceção porque não existe nenhum especificador de formato de data e hora padrão "h".

Para utilizar qualquer um dos especificadores de formato de data e hora personalizados como o único especificador numa cadeia de formato (ou seja, para utilizar o "d", "f", "F", "g", "h", "H", "K", "m", "M", "s", "t", "y", "z", ":" ou "/" especificador de formato personalizado por si só), inclua um espaço antes ou depois do especificador ou inclua um especificador de formato de percentagem ("%") antes do especificador de data e hora personalizado único.

Por exemplo, "%h" é interpretado como uma cadeia de formato de data e hora personalizada que apresenta a hora representada pelo valor de data e hora atual. Também pode utilizar a cadeia de formato " h" ou "h ", embora isto inclua um espaço na cadeia de resultado juntamente com a hora. O exemplo seguinte ilustra estas três cadeias de formato.

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 '

Utilizar o caráter Escape

Os carateres "d", "f", "F", "g", "h", "H", "K", "m", "M", "s", "t", "y", "z", ":" ou "/" numa cadeia de formato são interpretados como especificadores de formato personalizado e não como carateres literais. Para impedir que um caráter seja interpretado como um especificador de formato, pode precedê-lo com uma barra invertida (\), que é o caráter de escape. O caráter de escape significa que o caráter seguinte é um literal de carateres que deve ser incluído na cadeia de resultado inalterado.

Para incluir uma barra invertida numa cadeia de resultado, tem de a escapar com outra barra invertida (\\).

Nota

Alguns compiladores, como os compiladores C++ e C#, também podem interpretar um único caráter de barra invertida como um caráter de escape. Para garantir que uma cadeia é interpretada corretamente durante a formatação, pode utilizar o caráter literal da cadeia de carateres literal (o caráter @) antes da cadeia em C#ou adicionar outro caráter de barra invertida antes de cada barra invertida em C# e C++. O exemplo C# seguinte ilustra ambas as abordagens.

O exemplo seguinte utiliza o caráter de escape para impedir que a operação de formatação interprete os carateres "h" e "m" como especificadores de formato.

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      

definições de Painel de Controlo

As definições de Opções Regionais e de Idioma no Painel de Controlo influenciar a cadeia de resultados produzida por uma operação de formatação que inclui muitos dos especificadores de formato de data e hora personalizados. Estas definições são utilizadas para inicializar o DateTimeFormatInfo objeto associado à cultura atual, que fornece valores utilizados para governar a formatação. Os computadores que utilizam definições diferentes geram cadeias de resultados diferentes.

Além disso, se utilizar o CultureInfo(String) construtor para instanciar um novo CultureInfo objeto que representa a mesma cultura da cultura do sistema atual, todas as personalizações estabelecidas pelo item Opções Regionais e de Idioma no Painel de Controlo serão aplicadas ao novo CultureInfo objeto. Pode utilizar o CultureInfo(String, Boolean) construtor para criar um CultureInfo objeto que não reflita as personalizações de um sistema.

Propriedades DateTimeFormatInfo

A formatação é influenciada pelas propriedades do objeto atual DateTimeFormatInfo , que é fornecido implicitamente pela cultura atual ou explicitamente pelo IFormatProvider parâmetro do método que invoca a formatação. Para o IFormatProvider parâmetro , deve especificar um CultureInfo objeto, que representa uma cultura ou um DateTimeFormatInfo objeto.

A cadeia de resultado produzida por muitos dos especificadores de formato de data e hora personalizados também depende das propriedades do objeto atual DateTimeFormatInfo . A sua aplicação pode alterar o resultado produzido por alguns especificadores de formato de data e hora personalizados ao alterar a propriedade correspondente DateTimeFormatInfo . Por exemplo, o especificador de formato "ddd" adiciona um nome abreviado do dia da semana encontrado na AbbreviatedDayNames matriz de cadeia à cadeia de resultado. Da mesma forma, o especificador de formato "MMMM" adiciona um nome de mês completo encontrado na matriz de MonthNames cadeia à cadeia de resultado.

Ver também