Formatação de data e time para uma cultura específica
The DateTime estrutura fornece métodos que permitem que os aplicativos para executar operações sensíveis à cultura em uma DateTime Digite. Um aplicativo pode usar o DateTimeFormatInfo classe para formatar e exibir um DateTime tipo com base na cultura. Por exemplo, usando ShortDatePattern, a data 1 de fevereiro de 2001 podem ser formatadas sistema autônomo 1/2/2001 para inglês (Estados Unidos), 02/01/2001 para inglês (Reino Unido) "en-GB", cultura, cultura e "en-US".
An DateTimeFormatInfo objeto pode ser criado para uma cultura específica ou para a cultura invariável, mas não para uma cultura neutra. Uma cultura neutra não fornece informações suficientes para exibir o formato de data correto.Uma exceção é lançada se o aplicativo tentar criar um DateTimeFormatInfo objeto usando uma cultura neutra. Para obter informações adicionais e exemplos de uso de DateTime a formatação, consulte Data e cadeias de caracteres de formato de time.
O exemplo de código a seguir exibe a data corrente utilizando ShortDatePattern Quando o CurrentThreadcultura corrente está configurada para inglês (Estados Unidos), "en-US" e, em seguida, alemão (Alemanha), "de-DE".
Imports System
Imports System.Globalization
Imports System.Threading
Public Class FormatDate
Public Shared Sub Main()
Dim dt As DateTime = DateTime.Now
' Sets the CurrentCulture property to U.S. English.
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
' Displays dt, formatted using the ShortDatePattern
' and the CurrentThread.CurrentCulture.
Console.WriteLine(dt.ToString("d"))
' Creates a CultureInfo for German in Germany.
Dim ci As New CultureInfo("de-DE")
' Displays dt, formatted using the ShortDatePattern
' and the CultureInfo.
Console.WriteLine(dt.ToString("d", ci))
End Sub
End Class
using System;
using System.Globalization;
using System.Threading;
public class FormatDate
{
public static void Main()
{
DateTime dt = DateTime.Now;
// Sets the CurrentCulture property to U.S. English.
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
// Displays dt, formatted using the ShortDatePattern
// and the CurrentThread.CurrentCulture.
Console.WriteLine(dt.ToString("d"));
// Creates a CultureInfo for German in Germany.
CultureInfo ci = new CultureInfo("de-DE");
// Displays dt, formatted using the ShortDatePattern
// and the CultureInfo.
Console.WriteLine(dt.ToString("d", ci));
}
}
Se você executar esse código em 9 de julho de 2001, a saída é exibida da seguinte forma:
7/9/2001
09.07.2001
Trabalhando com zonas time
The DateTime estrutura sempre usa o local fuso horário em comparações e cálculos. Você deve considerar isso ao seu aplicativo utiliza o Parse() e ParseExact() métodos. Esses métodos fornecem sobrecargas que permitem a representação da cadeia de caracteres de uma data e time ao converter um DateTime Digite. Seu aplicativo também pode formatar um DateTime tipo para uma cultura específica. Se um fuso horário não é especificado na seqüência de caracteres passada para esses métodos, eles recuperem analisada data e time sem executar um fuso horário ajuste.A data e time são baseados no sistema operacional fuso horário configuração.Se o aplicativo especificar um deslocamento de fuso horário, esses métodos analisar a cadeia de caracteres de data/time, converter para time universal coordenada (UTC, anteriormente conhecido sistema autônomo time de Greenwich ou GMT) e, em seguida, converter-o para a time no sistema local.
O aplicativo deve usar o ToUniversalTime método para converter uma impressora local DateTime Digite em seu UTC equivalente. Para analisar uma cadeia de caracteres de data/time e convertê-lo para um UTC DateTime tipo, o aplicativo deve usar o DateTimeStyles enumeração valor DateTimeStyles com um a Parse() método ou a ParseExact() método.
O exemplo de código a seguir cria um DateTime tipo para a time local e a converte para o UTC equivalente. Ambos os tipos são convertidos em seqüências de caracteres e gravados em console.Observe que as seqüências de caracteres diferem pelo deslocamento UTC entre local fuso horário e UTC.Estas seqüências de caracteres são convertidas novamente em DateTime tipos usando o ParseExact() método. Para capturar o time informações armazenadas em de zonautcdt, o valor DateTimeStyles DateTimeStyles deve ser especificado sistema autônomo um parâmetro para o ParseExact método. Para obter mais informações sobre o deslocamento UTC para vários fusos horários, consulte GetUtcOffset.
Imports System
Imports System.Globalization
Imports System.Threading
Public Class TimeZoneSample
Public Shared Sub Main()
Dim en As New CultureInfo("en-US")
Thread.CurrentThread.CurrentCulture = en
' Creates a DateTime for the local time.
Dim dt As New DateTime(2001, 7, 13, 4, 0, 0)
' Converts the local DateTime to the UTC time.
Dim utcdt As DateTime = dt.ToUniversalTime()
' Defines a custom string format to display the DateTime.
' zzz specifies the full time zone offset.
Dim format As [String] = "MM/dd/yyyy hh:mm:sszzz"
' Converts the local time to a string
' using the custom format string and display.
Dim str As [String] = dt.ToString(format)
Console.WriteLine(str)
' Converts the UTC time to a string
' using the custom format string and display.
Dim utcstr As [String] = utcdt.ToString(format)
Console.WriteLine(utcstr)
' Converts the string back to a local DateTime and displays it.
Dim parsedBack As DateTime = DateTime.ParseExact(str, format,
en.DateTimeFormat)
Console.WriteLine(parsedBack)
' Converts the string back to a UTC DateTime and displays it.
' If you do not use the DateTime.ParseExact method that takes
' a DateTimeStyles.AdjustToUniversal value, the parsed DateTime
' will not include the time zone information.
Dim parsedBackUTC As DateTime = DateTime.ParseExact(str, format, _
en.DateTimeFormat, DateTimeStyles.AdjustToUniversal)
Console.WriteLine(parsedBackUTC)
End Sub
End Class
using System;
using System.Globalization;
using System.Threading;
public class TimeZoneSample
{
public static void Main()
{
CultureInfo en = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = en;
// Creates a DateTime for the local time.
DateTime dt = new DateTime(2001, 7, 13, 4, 0, 0);
// Converts the local DateTime to the UTC time.
DateTime utcdt = dt.ToUniversalTime();
// Defines a custom string format to display the DateTime value.
// zzzz specifies the full time zone offset.
String format = "MM/dd/yyyy hh:mm:sszzz";
// Converts the local DateTime to a string
// using the custom format string and display.
String str = dt.ToString(format);
Console.WriteLine(str);
// Converts the UTC DateTime to a string
// using the custom format string and display.
String utcstr = utcdt.ToString(format);
Console.WriteLine(utcstr);
// Converts the string back to a local DateTime and displays it.
DateTime parsedBack =
DateTime.ParseExact(str,format,en.DateTimeFormat);
Console.WriteLine(parsedBack);
// Converts the string back to a UTC DateTime and displays it.
// If you do not use the DateTime.ParseExact method that takes
// a DateTimeStyles.AdjustToUniversal value, the parsed DateTime
// object will not include the time zone information.
DateTime parsedBackUTC = DateTime.ParseExact(str,format, _
en.DateTimeFormat, DateTimeStyles.AdjustToUniversal);
Console.WriteLine(parsedBackUTC);
}
}
Este código produz a seguinte saída:
07/13/2001 04:00:00-07:00
07/13/2001 11:00:00-07:00
7/13/2001 4:00:00 AM
7/13/2001 11:00:00 AM
Trabalhando com membros de DateTime
Quando você usa o DateTime estruturar, esteja ciente de que sistema autônomo membros sistema autônomo Day baseiam-se no calendário gregoriano. Mesmo que seu aplicativo altera o calendário corrente ou permite que o usuário alterar a data e configurações de time por meio do regionais e opções de linguagem no painel de controle, o calendário gregoriano ainda será usado para executar os cálculos para DateTime métodos, que impede a aritmética executada por esses métodos de corrompido por configurações de usuário. Se você quiser que o aplicativo para realizar sensíveis à cultura data e time operações com base no calendário corrente, o aplicativo deve usar o Calendar propriedade para chamar sistema autônomo métodos fornecidos pela Calendar classe, sistema autônomo GetDayOfMonth. Para obter um exemplo de como a diferença de valores recuperados pelo DateTime os membros e a Calendar membros, consulte Usando calendários para culturas específicas.
Ao trabalhar com o DateTime estruturar, esteja ciente de que um DateTime tipo é um valor imutável. Portanto, métodos, sistema autônomo AddDays recuperar uma nova DateTime valor em vez de incrementar um valor existente. O exemplo a seguir ilustra como incrementar um DateTime Digite um dia usando a demonstrativo dt = dt.AddDays(1).
Imports System
Imports System.Globalization
Imports System.Threading
Imports Microsoft.VisualBasic
Public Class TestClass
Public Shared Sub Main()
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
Dim dt As DateTime = DateTime.Now
Console.WriteLine(ControlChars.Newline + " Today is {0}", _
DateTime.Now.ToString("d"))
' Increments dt by one day.
dt = dt.AddDays(1)
Console.WriteLine(ControlChars.Newline + " Tomorrow is {0}", _
dt.ToString("d"))
End Sub
End Class
using System;
using System.Globalization;
using System.Threading;
public class TestClass
{
public static void Main()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
DateTime dt = DateTime.Now;
Console.WriteLine("Today is {0}", DateTime.Now.ToString("d"));
// Increments dt by one day.
dt = dt.AddDays(1);
Console.WriteLine("Tomorrow is {0}", dt.ToString("d"));
}
}
Se você executar esse código em 3 de agosto de 2001, ele exibirá a seguinte saída:
Today is 8/3/2001
Tomorrow is 8/4/2001
Consulte também
Conceitos
Seqüências de Caracteres de Formatação de Data e Hora