Cadeias de caracteres de formato de data e hora personalizado

Uma cadeia de caracteres de formato de data e hora define a representação de texto de um valor DateTime ou DateTimeOffset que é resultante de uma operação de formatação. Ela também pode definir a representação de um valor de data e hora necessário em uma operação de análise para converter com êxito a cadeia de caracteres para uma data e hora. Uma cadeia de caracteres de formato personalizado consiste em um ou mais especificadores de formato de data e hora personalizado. Qualquer cadeia de caracteres que não é uma cadeia de caracteres de formato de data e hora padrão é interpretada como uma cadeia de caracteres de formato de data e hora personalizado.

Dica

Baixe o Utilitário de Formatação, um aplicativo do Windows Forms do .NET Core que permite aplicar cadeias de caracteres de formato a valores numéricos ou de data e hora e exibir a cadeia de caracteres de resultado. O código-fonte está disponível para o C# e o Visual Basic.

As cadeias de caracteres de formato de data e hora personalizado podem ser usadas tanto com valores DateTime quanto DateTimeOffset.

Observação

Alguns dos exemplos de C# neste artigo são executados no executador de código embutido Try.NET e no playground. Clique no botão Executar para executar um exemplo em uma janela interativa. Ao executar o código, é possível modificá-lo e executar o código modificado clicando em Executar novamente. O código modificado será executado na janela interativa ou, se a compilação falhar, a janela interativa exibirá todos as mensagens de erro do compilador C#.

O fuso horário local do executador de código embutido Try.NET e do playground é o Tempo Universal Coordenado ou UTC. Isso pode afetar o comportamento e a saída dos exemplos que ilustram os tipos DateTime, DateTimeOffset e TimeZoneInfo e seus membros.

Nas operações de formatação, as cadeias de caracteres de formato de data e hora personalizado podem ser usadas com o método ToString de uma instância de data e hora ou com um método que ofereça suporte a formatação de composição. O exemplo a seguir ilustra ambos os usos.

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

Em operações de análise, as cadeias de caracteres de formato de data e hora personalizado podem ser usadas com os métodos DateTime.ParseExact, DateTime.TryParseExact, DateTimeOffset.ParseExact e DateTimeOffset.TryParseExact. Esses métodos exigem que uma cadeia de caracteres de entrada esteja exatamente de acordo com um padrão específico para que a operação de análise obtenha êxito. O exemplo a seguir ilustra uma chamada ao método DateTimeOffset.ParseExact(String, String, IFormatProvider) para analisar uma data que deve incluir um dia, um mês e um ano com 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 a seguir descreve os especificadores de formato de data e hora personalizados e exibe uma cadeia de caracteres de resultado produzida por cada especificador de formato. Por padrão, as cadeias de caracteres de resultado refletem as convenções de formatação da cultura en-US. Se um determinado especificador de formato produz uma cadeia de caracteres de resultado localizada, o exemplo também observa a cultura à qual a cadeia de caracteres de resultado se aplica. Para obter informações adicionais sobre como usar cadeias de caracteres de formato data e hora personalizado, confira a seção Observações.

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

Mais informações: Especificador de formato personalizado "d".
2009-06-01T13:45:30 –> 1

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

Mais informações: Especificador de formato personalizado "dd".
2009-06-01T13:45:30 –> 01

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

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

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

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

Mais informações: Especificador de formato personalizado "dddd".
2009-06-15T13:45:30 –> Monday (en-US)

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

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

Mais informações: Especificador de formato personalizado "F".
2009-06-15T13:45:30.6170000 –> 6

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

Mais informações: Especificador de formato personalizado "ff".
2009-06-15T13:45:30.6170000 –> 61

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

Mais informações: Especificador de formato personalizado "fff".
6/15/2009 13:45:30.617 –> 617

6/15/2009 13:45:30.0005 –> 000
"ffff" Os décimos de milésimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "ffff".
2009-06-15T13:45:30.6175000 –> 6175

2009-06-15T13:45:30.0000500 –> 0000
"fffff" Os centésimos de milésimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "fffff".
2009-06-15T13:45:30.6175400 –> 61754

6/15/2009 13:45:30.000005 –> 00000
"ffffff" Os milionésimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "ffffff".
2009-06-15T13:45:30.6175420 –> 617542

2009-06-15T13:45:30.0000005 –> 000000
"fffffff" Os décimos de milionésimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "fffffff".
2009-06-15T13:45:30.6175425 –> 6175425

2009-06-15T13:45:30.0001150 –> 0001150
"F" Se diferente de zero, os décimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "F".
2009-06-15T13:45:30.6170000 –> 6

2009-06-15T13:45:30.0500000 –> (no output)
"FF" Se diferente de zero, os centésimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "FF".
2009-06-15T13:45:30.6170000 –> 61

2009-06-15T13:45:30.0050000 –> (no output)
"FFF" Se diferente de zero, os milissegundos em um valor de data e hora.

Mais informações: Especificador de formato personalizado "FFF".
2009-06-15T13:45:30.6170000 –> 617

2009-06-15T13:45:30.0005000 –> (no output)
"FFFF" Se diferente de zero, os décimos de milésimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "FFFF".
2009-06-15T13:45:30.5275000 –> 5275

2009-06-15T13:45:30.0000500 –> (no output)
"FFFFF" Se diferente de zero, os centésimos de milésimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "FFFFF".
2009-06-15T13:45:30.6175400 –> 61754

2009-06-15T13:45:30.0000050 –> (no output)
"FFFFFF" Se diferente de zero, os milionésimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "FFFFFF".
2009-06-15T13:45:30.6175420 –> 617542

2009-06-15T13:45:30.0000005 –> (no output)
"FFFFFFF" Se diferente de zero, os décimos de milionésimos de segundo em um valor de data e hora.

Mais informações: Especificador de formato personalizado "FFFFFFF".
2009-06-15T13:45:30.6175425 –> 6175425

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

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

Mais informações: Especificador de formato personalizado "h".
2009-06-15T01:45:30 –> 1

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

Mais informações: Especificador de formato personalizado "hh".
2009-06-15T01:45:30 –> 01

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

Mais informações: Especificador de formato personalizado "H".
2009-06-15T01:45:30 –> 1

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

Mais informações: Especificador de formato personalizado "HH".
2009-06-15T01:45:30 –> 01

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

Mais informações: Especificador de formato personalizado "K".
Com valores de DateTime:

2009-06-15T13:45:30, Tipo não especificado –>

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

2009-06-15T13:45:30, Tipo local –> –07:00 (depende das configurações do computador local)

Com valores de DateTimeOffset:

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

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

Mais informações: Especificador de formato personalizado "M".
2009-06-15T01:09:30 –> 9

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

Mais informações: Especificador de formato personalizado "MM".
2009-06-15T01:09:30 –> 09

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

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

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

Mais informações: 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: Especificador de formato personalizado "MMMM".
2009-06-15T13:45:30 –> June (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: Especificador de formato personalizado "s".
2009-06-15T13:45:09 –> 9
"ss" O segundo, de 00 a 59.

Mais informações: Especificador de formato personalizado "ss".
2009-06-15T13:45:09 –> 09
"t" O primeiro caractere do designador AM/PM.

Mais informações: Especificador de formato personalizado "t".
2009-06-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: 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: 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: 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: 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: 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
"yyyyy" O ano como um número de cinco dígitos.

Mais informações: Especificador de formato personalizado "yyyyy".
0001-01-01T00:00:00 –> 00001

2009-06-15T13:45:30 –> 02009
"z" Diferença de horas em relação ao UTC, sem zeros à esquerda.

Mais informações: Especificador de formato personalizado "z".
2009-06-15T13:45:30-07:00 –> –7
"zz" Diferença de horas em relação ao UTC, com um zero à esquerda para um valor de dígito único.

Mais informações: Especificador de formato personalizado "zz".
2009-06-15T13:45:30-07:00 –> –07
"zzz" Diferença de horas e minutos em relação ao UTC.

Mais informações: Especificador de formato personalizado "zzz".
2009-06-15T13:45:30-07:00 –> –07:00
":" O separador de hora.

Mais informações: 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: 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)
"string"

'string'
Delimitador de cadeia de caracteres literal.

Para saber mais: Literais de cadeia de caracteres.
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 caractere seguinte como um especificador de formato personalizado.

Para obter mais informações: Usando especificadores de formato personalizado único.
2009-06-15T13:45:30 (%h) –> 1
\ O caractere de escape.

Para saber mais: Literais de cadeia de caracteres e Como usar o caractere de escape.
2009-06-15T13:45:30 (h \h) –> 1 h
Qualquer outro caractere O caractere é copiado, inalterado, para a cadeia de caracteres de resultado.

Para saber mais: Literais de cadeia de caracteres.
2009-06-15T01:45:30 (arr hh:mm t) –> arr 01:45 A

As seções a seguir oferecem informações adicionais sobre cada especificador de formato de data e hora personalizado. A menos que observado do contrário, cada especificador produz uma representação de cadeia de caracteres idêntica independente de ela ser usada com um valor DateTime ou um valor DateTimeOffset.

Especificador de formato de dia “d”

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. Dias de dígito único são formatados sem um zero à esquerda.

Se o especificador de formato "d" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão "d". Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "d" em várias cadeias de caracteres 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

Especificador de formato personalizado "dd"

A cadeia de caracteres de formato personalizado "dd" representa o dia do mês como um número de 01 a 31. Dias de dígito único são formatados com um zero à esquerda.

O exemplo a seguir inclui o especificador de formato personalizado "dd" em uma cadeia de caracteres 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

Especificador de formato personalizado "ddd"

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

O exemplo a seguir inclui o especificador de formato personalizado "ddd" em uma cadeia de caracteres 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

Especificador de formato personalizado "dddd"

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

O exemplo a seguir inclui o especificador de formato personalizado "dddd" em uma cadeia de caracteres 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” de segundos em minúsculas

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 os décimos de segundo em um valor de data e hora.

Se o especificador de formato "f" for usado sem outros especificadores de formato, ele será interpretado como o especificador padrão de formato de data e hora "f". Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

Quando você usa especificadores de formato "f" como parte de uma cadeia de caracteres de formato fornecida para o método ParseExact, TryParseExact, ParseExact ou TryParseExact, o número de especificadores de formato "f" indica o número de dígitos mais significativos da fração de segundos que deve estar presente para analisar a cadeia de caracteres com sucesso.

O exemplo a seguir inclui o especificador de formato personalizado "f" em uma cadeia de caracteres 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

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, ele representa os centésimos de segundo em um valor de data e hora.

O exemplo a seguir inclui o especificador de formato personalizado "ff" em uma cadeia de caracteres 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

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, ele representa os milissegundos em um valor de data e hora.

O exemplo a seguir inclui o especificador de formato personalizado "fff" em uma cadeia de caracteres 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

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, ele representa os décimos de milésimos de um segundo em um valor de data e hora.

Embora seja possível exibir os décimos de milésimos de um componente de segundos de um valor temporal, esse valor pode não ser significativo. A precisão dos valores de data e hora depende da resolução do relação ao relógio do sistema. Nos sistemas operacionais 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

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, ele representa os centésimos de milésimos de um segundo em um valor de data e hora.

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

Voltar à tabela

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, ele representa os milionésimos de um segundo em um valor de data e hora.

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

Voltar à tabela

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 décimos de milionésimos de segundo em um valor de data e hora.

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

Voltar à tabela

Especificador de fração “f” de segundos em maiúsculas

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 os décimos de segundo em um valor de data e hora. Nada será exibido se o dígito for zero e o ponto decimal que segue o número de segundos também não for exibido.

Se o especificador de formato "F" for usado sem outros especificadores de formato, ele será interpretado como o especificador padrão de formato de data e hora "F". Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O número de especificadores de formato "F" usados com o método ParseExact, TryParseExact, ParseExact ou TryParseExact indica o número máximo de dígitos significativos da fração de segundos que podem estar presentes para que a análise da cadeia de caracteres seja feita com êxito.

O exemplo a seguir inclui o especificador de formato personalizado "F" em uma cadeia de caracteres 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

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, ele representa os centésimos de segundo em um valor de data e hora. Zeros à direita não são exibidos. Nada será exibido se os dois dígitos significativos forem zero e, nesse caso, o ponto decimal que segue o número de segundos também não for exibido.

O exemplo a seguir inclui o especificador de formato personalizado "FF" em uma cadeia de caracteres 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

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, ele representa os milissegundos em um valor de data e hora. Zeros à direita não são exibidos. Nada será exibido se os três dígitos significativos forem zero e, nesse caso, o ponto decimal que segue o número de segundos também não for exibido.

O exemplo a seguir inclui o especificador de formato personalizado "FFF" em uma cadeia de caracteres 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

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, ele representa os décimos de milésimos de um segundo em um valor de data e hora. Zeros à direita não são exibidos. Nada será exibido se os quatro dígitos significativos forem zero e, nesse caso, o ponto decimal que segue o número de segundos também não for exibido.

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

Voltar à tabela

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, ele representa os centésimos de milésimos de um segundo em um valor de data e hora. Zeros à direita não são exibidos. Nada será exibido se os cinco dígitos significativos forem zero e, nesse caso, o ponto decimal que segue o número de segundos também não for exibido.

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

Voltar à tabela

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, ele representa os milionésimos de um segundo em um valor de data e hora. Zeros à direita não são exibidos. Nada será exibido se os seis dígitos significativos forem zero e, nesse caso, o ponto decimal que segue o número de segundos também não for exibido.

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

Voltar à tabela

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 décimos de milionésimos de segundo em um valor de data e hora. Zeros à direita não são exibidos. Nada será exibido se os sete dígitos significativos forem zero e, nesse caso, o ponto decimal que segue o número de segundos também não for exibido.

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

Voltar à tabela

Especificador de formato incorreto “g” era

Especificador de formato personalizado "g" ou "gg"

Os especificadores de formato personalizado “g” ou “gg” (mais qualquer número de especificadores “g” adicionais) representam o período ou era, como A.D. A operação de formatação ignorará esse especificador se a data a ser formatada não tiver um período ou uma cadeia de caracteres de era associada.

Se o especificador de formato "g" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão "g". Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "g" em uma cadeia de caracteres 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 de formato “h” de hora em minúsculas

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 todas as horas desde a meia-noite. Uma hora específica após a meia-noite é indistinguível da mesma hora depois do meio-dia. A hora não é arredondada e uma hora de dígito único é formatada sem um zero à esquerda. Por exemplo, considerando a hora 5:43 da manhã ou da tarde, este especificador de formato personalizado exibe “5".

Se o especificador de formato "h" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão e gerará uma FormatException. Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "h" em uma cadeia de caracteres 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

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 todas as horas desde a meia-noite ou o meio-dia. Uma hora específica após a meia-noite é indistinguível da mesma hora depois do meio-dia. A hora não é arredondada e uma hora de dígito único é formatada com um zero à esquerda. Por exemplo, considerando a hora 5:43 da manhã ou da tarde, este especificador de formato exibe “05".

O exemplo a seguir inclui o especificador de formato personalizado "hh" em uma cadeia de caracteres 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 de formato “h” de hora em maiúsculas

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 todas as horas desde a meia-noite. Uma hora de dígito único é formatada sem um zero à esquerda.

Se o especificador de formato "H" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão e gerará uma FormatException. Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "H" em uma cadeia de caracteres 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

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 todas as horas desde a meia-noite. Uma hora de dígito único é formatada com um zero à esquerda.

O exemplo a seguir inclui o especificador de formato personalizado "HH" em uma cadeia de caracteres 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 de formato “K” de fuso horário

Especificador de formato personalizado "K"

O especificador de formato personalizado "K" representa as informações de fuso horário de um valor temporal. Quando esse especificador de formato é usado com valores DateTime, a cadeia de caracteres de resultado é definida pelo valor da propriedade DateTime.Kind:

  • Para o fuso horário local (um valor da propriedade DateTime.Kind de DateTimeKind.Local), esse especificador produz uma cadeia de caracteres resultante que contém a diferença local em relação ao Horário Universal Coordenado (UTC). Por exemplo, “-07h00”.

  • Para uma hora UTC (um valor da propriedade DateTime.Kind de DateTimeKind.Utc), a cadeia de caracteres de resultado inclui um caractere "Z" para representar uma data UTC.

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

Para valores DateTimeOffset, o especificador de formato "K" é equivalente ao especificador de formato "zzz" e produz uma cadeia de caracteres resultante que contém a diferença em relação ao valor de DateTimeOffset do UTC.

Se o especificador de formato "K" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão e gerará uma FormatException. Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir exibe a cadeia de caracteres resultante do uso do especificador de formato personalizado "K" com vários valores DateTime e DateTimeOffset em um sistema no fuso horário padrão 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

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 os minutos inteiros decorridos desde a última hora. Um minuto de dígito único é formatado sem um zero à esquerda.

Se o especificador de formato "m" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão "m". Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "m" em uma cadeia de caracteres 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

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 os minutos inteiros decorridos desde a última hora. Um minuto de dígito único é formatado com um zero à esquerda.

O exemplo a seguir inclui o especificador de formato personalizado "mm" em uma cadeia de caracteres 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 de formato “M” de mês

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 os calendários com 13 meses). Um mês de dígito único é formatado sem um zero à esquerda.

Se o especificador de formato "M" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão "M". Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "M" em uma cadeia de caracteres 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

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 01 a 13 para os calendários com 13 meses). Um mês de dígito único é formatado com um zero à esquerda.

O exemplo a seguir inclui o especificador de formato personalizado "MM" em uma cadeia de caracteres 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

Especificador de formato personalizado "MMM"

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

O exemplo a seguir inclui o especificador de formato personalizado "MMM" em uma cadeia de caracteres 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

Especificador de formato personalizado "MMMM"

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

O exemplo a seguir inclui o especificador de formato personalizado "MMMM" em uma cadeia de caracteres 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

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 os segundos inteiros decorridos desde o último minuto. Um segundo de dígito único é formatado sem um zero à esquerda.

Se o especificador de formato "s" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão "s". Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "s" em uma cadeia de caracteres 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

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 os segundos inteiros decorridos desde o último minuto. Um segundo de dígito único é formatado com um zero à esquerda.

O exemplo a seguir inclui o especificador de formato personalizado "ss" em uma cadeia de caracteres 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 de formato “t” de meridiano

Especificador de formato personalizado "t"

O especificador de formato personalizado "t" representa o primeiro caractere do designador AM/PM. O designador localizado apropriado é recuperado da propriedade DateTimeFormatInfo.AMDesignator ou DateTimeFormatInfo.PMDesignator da cultura atual ou específica. O designador AM é usado para todas as horas de 0:00:00 (meia-noite) até 11:59:59,999. O designador PM é usado para todas as horas de 12:00:00 (meio-dia) até 23:59:59,999.

Se o especificador de formato "t" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão "t". Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "t" em uma cadeia de caracteres 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

Especificador de formato personalizado "tt"

O especificador de formato personalizado "tt" (mais qualquer número de especificadores "t" adicionais) representa o designador AM/PM inteiro. O designador localizado apropriado é recuperado da propriedade DateTimeFormatInfo.AMDesignator ou DateTimeFormatInfo.PMDesignator da cultura atual ou específica. O designador AM é usado para todas as horas de 0:00:00 (meia-noite) até 11:59:59,999. O designador PM é usado para todas as horas de 12:00:00 (meio-dia) até 23:59:59,999.

Certifique-se de usar o especificador "tt" para linguagens para as quais é necessário manter a distinção entre AM e PM. Um exemplo é o idioma japonês, no qual os designadores AM e PM diferem no segundo caractere e não no primeiro.

O exemplo a seguir inclui o especificador de formato personalizado "tt" em uma cadeia de caracteres 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 de formato “y” de ano

Especificador de formato personalizado "y"

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

Se o especificador de formato "y" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão "y". Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "y" em uma cadeia de caracteres 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

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 que dois dígitos, somente os dois dígitos de ordem baixa aparecerão no resultado. Se o ano de dois dígitos tiver menos de dois dígitos significativos, o número será preenchido com zeros à esquerda para produzir dois dígitos.

Em uma operação de análise, um ano de dois dígitos é analisado usando o especificador de formato personalizado “yy” interpretado com base na propriedade Calendar.TwoDigitYearMax do calendário atual do provedor de formato. O exemplo a seguir analisa a representação de cadeia de caracteres de uma data com um ano de dois dígitos usando o calendário gregoriano padrão da cultura en-US que, neste caso, é a cultura atual. Ele então altera o objeto CultureInfo da cultura atual para usar um objeto GregorianCalendar cuja propriedade TwoDigitYearMax foi 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 a seguir inclui o especificador de formato personalizado "yy" em uma cadeia de caracteres 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

Especificador de formato personalizado "yyy"

O especificador de formato personalizado "yyy" representa o ano com, no mínimo, três dígitos. Se o ano tem mais de três dígitos significativos, eles são incluídos na cadeia de caracteres de resultado. Se o ano tem menos de três dígitos, o número é preenchido com zeros à esquerda para produzir três dígitos.

Observação

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

O exemplo a seguir inclui o especificador de formato personalizado "yyy" em uma cadeia de caracteres 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

Especificador de formato personalizado "yyyy"

O especificador de formato personalizado "yyyy" representa o ano com, no mínimo, quatro dígitos. Se o ano tem mais de quatro dígitos significativos, eles são incluídos na cadeia de caracteres de resultado. Se o ano possui menos de quatro dígitos, o número é preenchido com zeros à esquerda para produzir quatro dígitos.

Observação

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

O exemplo a seguir inclui o especificador de formato personalizado "yyyy" em uma cadeia de caracteres 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

Especificador de formato personalizado "yyyyy"

O especificador de formato personalizado "yyyyy" (mais qualquer número de especificadores "y" adicionais) representa o ano com, no mínimo, cinco dígitos. Se o ano tem mais de cinco dígitos significativos, eles são incluídos na cadeia de caracteres de resultado. Se o ano tem menos de cinco dígitos, o número é preenchido com zeros à esquerda para produzir cinco dígitos.

Se houver especificadores "y" adicionais, o número será preenchido com tantos zeros à esquerda quantos forem necessários para produzir o número de especificadores "y".

O exemplo a seguir inclui o especificador de formato personalizado "yyyyy" em uma cadeia de caracteres 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

Especificador de formato “z” de diferença

Especificador de formato personalizado "z"

Com valores DateTime, o especificador de formato personalizado “z” representa a diferença com sinal do fuso horário especificado em relação ao UTC, medido em horas. A diferença é sempre exibida com um sinal à esquerda. Um sinal de adição (+) indica horas depois do UTC, enquanto que um sinal de subtração (-) indica horas antes do UTC. Uma diferença com um único dígito é formatada sem um zero à esquerda.

A tabela a seguir mostra como o valor de deslocamento é alterado dependendo do DateTimeKind.

DateTimeKind valor Valor de diferença
Local A diferença assinada do fuso horário do sistema operacional local de UTC.
Unspecified A diferença assinada do fuso horário do sistema operacional local de UTC.
Utc +0 no .NET Core e .NET 5+.

No .NET Framework, a diferença assinada do fuso horário do sistema operacional local de UTC.

Com os valores de DateTimeOffset, este formato representa a diferença do valor de DateTimeOffset em relação ao UTC em horas.

Se o especificador de formato "z" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão e gerará uma FormatException. Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

O exemplo a seguir inclui o especificador de formato personalizado "z" em uma cadeia de caracteres 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

Especificador de formato personalizado "zz"

Com valores DateTime, o especificador de formato personalizado "zz" representa a diferença do fuso horário especificado em relação ao UTC em horas. A diferença é sempre exibida com um sinal à esquerda. Um sinal de adição (+) indica horas depois do UTC, enquanto que um sinal de subtração (-) indica horas antes do UTC. Uma diferença com um único dígito único é formatada com um zero à esquerda.

A tabela a seguir mostra como o valor de deslocamento é alterado dependendo do DateTimeKind.

DateTimeKind valor Valor de diferença
Local A diferença assinada do fuso horário do sistema operacional local de UTC.
Unspecified A diferença assinada do fuso horário do sistema operacional local de UTC.
Utc +00 no .NET Core e .NET 5+.

No .NET Framework, a diferença assinada do fuso horário do sistema operacional local de UTC.

Com os valores de DateTimeOffset, este formato representa a diferença do valor de DateTimeOffset em relação ao UTC em horas.

O exemplo a seguir inclui o especificador de formato personalizado "zz" em uma cadeia de caracteres 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

Especificador de formato personalizado "zzz"

Com valores DateTime, o especificador de formato personalizado "zzz" representa a diferença do fuso horário especificado em relação ao UTC em horas e minutos. A diferença é sempre exibida com um sinal à esquerda. Um sinal de adição (+) indica horas depois do UTC, enquanto que um sinal de subtração (-) indica horas antes do UTC. Uma diferença com um único dígito único é formatada com um zero à esquerda.

A tabela a seguir mostra como o valor de deslocamento é alterado dependendo do DateTimeKind.

DateTimeKind valor Valor de diferença
Local A diferença assinada do fuso horário do sistema operacional local de UTC.
Unspecified A diferença assinada do fuso horário do sistema operacional local de UTC.
Utc +00:00 no .NET Core e .NET 5+.

No .NET Framework, a diferença assinada do fuso horário do sistema operacional local de UTC.

Com valores DateTimeOffset, esse especificador de formato representa a diferença do valor de DateTimeOffset em relação ao UTC em horas e minutos.

O exemplo a seguir inclui o especificador de formato personalizado "zzz" em uma cadeia de caracteres 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

Especificador de formato personalizado ":"

O especificador de formato personalizado ":" representa o separador de hora, o qual é usado para diferenciar horas, minutos e segundos. O separador de hora localizado apropriado é recuperado da propriedade DateTimeFormatInfo.TimeSeparator da cultura atual ou especificada.

Observação

Para alterar o separador de hora de uma sequência de data e hora específica, especifique o caractere separador dentro de um delimitador de cadeia de caracteres literal. Por exemplo, a cadeia de caracteres de formato personalizada hh'_'dd'_'ss produz uma cadeia de caracteres de resultado em que "_" (um sublinhado) é sempre usado como o separador de hora. Para alterar o separador de hora de todas as datas de uma cultura, seja para alterar o valor da propriedade DateTimeFormatInfo.TimeSeparator da cultura atual ou para instanciar um objeto DateTimeFormatInfo, atribua o caractere à sua propriedade TimeSeparator e chame uma sobrecarga do método de formatação que inclua um parâmetro IFormatProvider.

Se o especificador de formato ":" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão e gerará uma FormatException. Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

Voltar à tabela

Especificador de formato personalizado "/"

O especificador de formato personalizado "/" representa o separador de data, o qual é usado para diferenciar anos, meses e dias. O separador de data localizado apropriado é recuperado da propriedade DateTimeFormatInfo.DateSeparator da cultura atual ou especificada.

Observação

Para alterar o separador de data de uma sequência de data e hora específica, especifique o caractere separador dentro de um delimitador de cadeia de caracteres literal. Por exemplo, a sequência de formato personalizado mm'/'dd'/'yyyy produz uma cadeia de caracteres de resultado em que "/" é sempre usado como o separador de data. Para alterar o separador de data de todas as datas de uma cultura, seja para alterar o valor da propriedade DateTimeFormatInfo.DateSeparator da cultura atual ou para instanciar um objeto DateTimeFormatInfo, atribua o caractere à sua propriedade DateSeparator e chame uma sobrecarga do método de formatação que inclua um parâmetro IFormatProvider.

Se o especificador de formato "/" for usado sem outros especificadores de formato personalizado, ele será interpretado como um especificador de formato de data e hora padrão e gerará uma FormatException. Para saber mais sobre como usar um especificador de formato único, confira Usar especificadores de formato único personalizados posteriormente nesse artigo.

Voltar à tabela

Literais de caracteres

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

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

Todos os outros caracteres sempre são interpretados como literais de caracteres e, em uma operação de formatação, são incluídos na cadeia de caracteres de resultado inalterada. Em uma operação de análise, eles devem corresponder exatamente aos caracteres na cadeia de entrada; a comparação diferencia maiúsculas de minúsculas.

O exemplo a seguir inclui os caracteres literais "PST" (que indicam a Hora Padrão do Pacífico) e “PDT” (que indicam a Hora de Verão do Pacífico) para representar o fuso horário local em uma cadeia de caracteres de formato. Observe que a cadeia de caracteres está incluída na cadeia de caracteres de resultado e que uma cadeia de caracteres que inclui a cadeia de caracteres 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

Há duas maneiras de indicar que os caracteres devem ser interpretados como caracteres literais e não como caracteres reservados, para que possam ser incluídos em uma cadeia de caracteres de resultado ou analisados com êxito em uma cadeia de caracteres de entrada:

O exemplo a seguir inclui os caracteres literais "pst" (que indicam a Hora Padrão do Pacífico) para representar o fuso horário local em uma cadeia de caracteres de formato. Como "s" e "t" são cadeias de caracteres de formato personalizado, ambos os caracteres devem ter um escape para serem interpretados como caracteres literais.

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
  • Colocando toda a cadeia de caracteres literal entre aspas ou apóstrofos. O exemplo a seguir é semelhante ao anterior, mas "pst" é colocado entre aspas para indicar que toda a cadeia de caracteres delimitada deve ser interpretada como literais de caracteres.
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

Observações

Usando especificadores de formato personalizado simples

Uma cadeia de caracteres de formato de data e hora personalizado consiste em dois ou mais caracteres. Os métodos de formatação de data e hora interpretam qualquer cadeia de um único caractere como uma cadeia de caracteres de formato de data e hora padrão. Quando não reconhecem o caractere como um especificador de formato válido, eles geram uma FormatException. Por exemplo, uma cadeia de caracteres de formato que consiste somente no especificador "h" é interpretada como uma cadeia de caracteres de formato padrão de data e hora. No entanto, nesse caso específico, uma exceção é gerada porque não há nenhum especificador "h" de formato padrão de data e hora.

Para usar qualquer um dos especificadores de formato de data e hora personalizado como sendo o único especificador em uma cadeia de caracteres de formato (ou seja, para usar o especificador de formato personalizado "d", "f", "F", "g", "h", "H", "K", "m", "M", "s", "t", "y", "z", ":" ou “/” por si só), inclua um espaço antes ou após o especificador ou inclua um especificador de formato de porcentagem "%" antes do especificador de data e hora personalizado simples.

Por exemplo, "%h" é interpretada como uma cadeia de caracteres de formato de data e hora personalizado que exibe a hora representada pelo valor atual de data e hora. Você também pode usar a cadeia de caracteres de formato " h" ou "H ", embora isso inclua um espaço na cadeia de caracteres resultante em conjunto com a hora. O exemplo a seguir ilustra essas três cadeias de caracteres de formatos.

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 '

Usando o caractere de Escape

Os caracteres "d", "f", "F", "g", "h", "H", "K", "m", "M", "s", "t", "y", "z", ":" ou "/" em uma cadeia de caracteres de formato são interpretados como especificadores de formato personalizados em vez de caracteres literais. Para impedir que um caractere seja interpretado como um especificador de formato, você pode precedê-lo com uma barra invertida (\), que é o caractere de escape. O caractere de escape significa que o próximo caractere é um literal de caractere que deve ser incluído inalterado na cadeia de caracteres de resultado.

Para incluir uma barra invertida em uma cadeia de caracteres de resultado, você deve escapá-la com outra barra invertida (\\).

Observação

Alguns compiladores, como os compiladores C++ e C#, também podem interpretar um único caractere de barra invertida como um caractere de escape. Para garantir que uma cadeia de caracteres seja interpretada corretamente quando formatada, você poderá usar o caractere literal de cadeia de caracteres textual (o caractere @) antes da cadeia de caracteres em C# ou adicionar outro caractere de barra invertida antes de cada barra invertida em C# e em C++. O exemplo de C# a seguir ilustra ambas as abordagens.

O exemplo a seguir usa o caractere de escape para impedir que a operação de formatação interprete os caracteres de "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      

Configurações do Painel de Controle

As configurações de Opções Regionais e de Idiomas no Painel de Controle influenciam a cadeia de caracteres de resultado produzida por uma operação de formatação que inclui muitos dos especificadores de formato de data e hora personalizado. Essas configurações são usadas para inicializar o objeto DateTimeFormatInfo associado à cultura atual, a qual fornece os valores usados para determinar a formatação. Computadores que usam configurações diferentes geram cadeias de caracteres de resultado diferentes.

Além disso, se o constructo CultureInfo(String) for usado para criar uma instância de um novo objeto CultureInfo que representa a mesma cultura que a cultura atual do sistema, quaisquer personalizações estabelecidas pelo item Opções Regionais e de Idioma no Painel de Controle serão aplicadas ao novo objeto CultureInfo. Você pode usar o construtor CultureInfo(String, Boolean) para criar um objeto CultureInfo que não reflita as personalizações de um sistema.

Propriedades DateTimeFormatInfo

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

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

Confira também