Windows Forms - Funções de Data, Horario e Tempo
Module Data_e_Tempo

Convertendo a data do Formato BR(DD/MM/AAAA) para o americano (MM/DD/AAAA)-Bancos de dados

    ''' <summary>
    ''' Recebe uma data no formato string dd/mm/aa e retorna outra data em string no formato americano (mm/dd/aa)
    ''' </summary>
    ''' <param name="data">formato dd/mm/aa mas o ano pode ser aaaa</param>
    ''' <returns></returns>
    Public Function dataIng(ByVal data As String)
    'converte a data de dd/mm/aaaa para mm/dd/aaaa
    Dim a() As String
    Dim b As String

    If data = "" Then Return ""

    If data.IndexOf("/") >= 0 Then
        a = data.Split("/")
        b = a(1) + "/" + a(0) + "/" + a(2)
        Return b
    End If

    If data.IndexOf("-") >= 0 Then
        a = data.Split("-")
        b = a(1) + "/" + a(0) + "/" + a(2)
        Return b
    End If
    Return ""
    End Function



Criando um novo tipo Data

    Dim MinhaDatax As Date = #1/1/2013#
    Dim dt As New DateTime(2003, 5, 1)



Obtendo o horário Corrente

    Dim MinhaData As DateTime = DateTime.Now



Adicionando a uma data

    MinhaData = MinhaData.AddDays(100)

    Dim MinhaData1 As Date = DateTime.Now
     Dim MinhaData2 As Date = DateTime.Now.AddHours(3000)

    Dim MinhaData15 As Date = DateTime.Now.AddDays(3000)
    Dim MinhaData16 As Date = DateTime.Now.AddMonths(300)
    Dim MinhaData17 As Date = DateTime.Now.AddYears(3)
    Dim MinhaData18 As Date = DateTime.Now.AddHours(3000)
    Dim MinhaData19 As Date = DateTime.Now.AddMinutes(3000)
    Dim MinhaData20 As Date = DateTime.Now.AddSeconds(3000)



Obtendo partes de uma data qualquer

    Dim StringDate As String = MinhaData.Year.ToString()

    Dim MinhaData3 As DateTime = DateTime.Now
    Dim Intervalo As TimeSpan = TimeSpan.FromHours(3000)
    Dim MinhaData4 As DateTime = MinhaData1 + Intervalo



Subtraindo datas

    'O tipo timespan existe para fazer operações de soma e subtração de datas e Horários.
    ' Subtraindo um objeto DateTime de outro produz um TimeSpan.
    Dim MinhaData1 As Date = DateTime.Now
    Dim MinhaData2 As Date = DateTime.Now.AddHours(3000)
    Dim Diferenca1 As TimeSpan
    Diferenca1 = MinhaData2.Subtract(MinhaData1)

    Dim Diferenca As TimeSpan
    Diferenca = MinhaData2 - MinhaData1

    Dim ts As TimeSpan = New TimeSpan(4, 30, 22) ' 4 horas 30 minutos e 22 segundos
    ts = ts.Subtract(New TimeSpan(0, 15, 0)) ' retirando 15 minutos = 4h15min22seg



Convertendo um TimeSpan em Minutos

    Dim NumberOfMinutes As Double
    NumberOfMinutes = Diferenca1.TotalMinutes



Obtendo o horário Corrente

    Dim MinhaData5 As Date = DateTime.Today



Obtendo partes do horario corrente

    Dim MeuInteiro6 As Integer = Now.Day
    Dim MeuInteiro7 As Integer = Now.Month
    Dim MeuInteiro8 As Integer = Now.Year
    Dim MeuInteiro9 As Integer = Now.Hour
    Dim MeuInteiro10 As Integer = Now.Hour
    Dim MeuInteiro11 As Integer = Now.Minute
    Dim MeuInteiro12 As Integer = Now.Second
    Dim MeuInteiro13 As Integer = Now.Millisecond
    Dim MeuInteiro14 As Integer = Now.DayOfWeek



Quantos dias tem o mês ?

    Dim MeuInteiro15 As Integer = DateTime.DaysInMonth(2003, 2)



É ano bissexto?

    Dim MeuInteiro16 As Boolean = DateTime.IsLeapYear(2003)
    Dim bissexto As Boolean = Date.IsLeapYear(2013)



Dia da Semana

    Dim dt As DateTime = New DateTime(2010, 10, 17)
    Dim dia As Integer = dt.DayOfWeek
    Dim diasem As Integer = dt.DayOfWeek
    Console.WriteLine("The day of the week for {0:d} is {1}.", dt, dt.DayOfWeek)
    Dim x As Integer = dt.DayOfWeek '0=domingo, 6=sábado



Horário de Verão ?

    Dim seila As Boolean = dt.IsDaylightSavingTime



Formatando a data de acordo com um tipo pré-definido (d)

    Dim data1 As String = "17/10/2010"
    Dim fmtData As String = String.Format("d", data1)



Exemplo de como a formatação da data funciona com os tipos pré-definidos.
Nota 1 : Lógicamente a data depende do idioma e das configurações regionais do servidor
Nota 2 : Suponha que a data corrente seja 19 de Setembro de 1980 14:30:59

Especificador Tipo Resultado
d() Data(curta) 19/09/1980
D() Data Longa 19 Setembro(1980)
t() Hora(Curta-HH:MM) 14:30
T() Hora(Longa-HH:MM:SS) 14:30:59
f() Data e Hora 19 Setembro 1980 14:30
F() Data e Hora completo 19 Setembro 1980 14:30:59
g() Data de Hora padrão 19/09/1980 14:30
G() Data de Hora padrão longo 19/09/1980 14:30:59
M() Dia / Mês 19 Setembro()
r() RFC1123 date string Sex, 19 Set 1980 14:30:59 GMT
s() Sortable(Data / hora) 1980-09-19T14:30:59
u() Hora Universal, Timezone local 1980-09-19 14:30:59Z
Y() Mês / Ano Setembro(1980)



Supondo que a data seja : Ex.: Setembro 19, 1980 14:30:59
Especificador Tipo Resultado
dd() dia() 19
ddd() Nome curto do dia Sex()
dddd() Nome completo do dia Sexta(-feira)
hh() 2 dígitos para a hora 02
HH() 2 dígitos para a hora (24 horas) 14
mm() 2 dígitos para o minuto 30
MM() Mês() 9
MMM() Nome curto do Mês Set
MMMM() Nome do Mês Setembro()
ss() Segundos() 59
tt() AM/PM PM()
yy() 2 dígitos do Ano 80
yyyy() 4 dígitos do Ano 1980
: Separador, ex. {0:hh:mm:ss} 14:30:59
/ Seperator, ex. {0:dd/MM/yyyy} 08/06/1970



operações com data

    Debug.WriteLine(DateDiff(DateInterval.Day, #3/9/2007#, #5/15/2008#))    'exibe 433
    Debug.WriteLine(Now().ToShortDateString)    ' exibe data corrente sem horario
    Debug.WriteLine(MonthName(Now.Month, True))    ' exibe o mes corrente abreviado no formato Jan, Fev...
    Debug.WriteLine(MonthName(Now.Month, False))    ' exibe o mes corrente inteiro no formato Janeiro, Fevereiro


Função para calular daqui a 1 mês

    'public static DateTime NextMonth(this DateTime date)
    If (DateTime.Now.Day <> DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)) Then ' é o último dia do mês?
        Debug.WriteLine(DateTime.Now.AddMonths(1))
    Else
        Debug.WriteLine(DateTime.Now.AddDays(1).AddMonths(1).AddDays(-1))
    End If


Hoje é Quinta-Feira?

    Console.WriteLine("Is Thursday the day of the week for {0:d}?: {1}", dt, dt.DayOfWeek = DayOfWeek.Thursday)


A data é passado, presente ou futuro?

    If dt < DateTime.Now Then
        Console.WriteLine("Data anterior a hoje")
    End If



    Private Sub Testes1()
    Dim data As Date

    data = #1/1/2010#
    data = #8/27/1998 6:29:11 PM#
    data = "July 2,2011"
    data = DateTime.Today ' retorna data
    data = DateTime.Now ' retorna data e horario

    Dim d1, d2 As Date
    d1 = Now
    d2 = #1/1/2004#
    Debug.WriteLine(d1 - d2) ' o resultado varia de acordo com a data
    ' eu executei o programa em #5/1/2013 3:45:17 PM# e deu o resultado 3408.15:45:17.1571609
    ' o que corresponde a 3408 dias, 15 horas, 45 minutos, 17.1571609 segundos
    data = Now.AddYears(2) 'dias, horas,milisegundos, minutos, mes,

    ' Get the date and time for the current moment, adjusted to the local time zone.
    Dim saveNow As DateTime = DateTime.Now

    ' Get the date and time for the current moment expressed as coordinated universal time (UTC).
    Dim saveUtcNow As DateTime = DateTime.UtcNow
    Dim myDt As DateTime

    ' Display the value and Kind property of the current moment expressed as UTC and local time.
    ExibeAgora("UtcNow: ..........", saveUtcNow)
    ExibeAgora("Now: .............", saveNow)
    Console.WriteLine()

    ' Change the Kind property of the current moment to DateTimeKind.Utc and display the result.
    myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Utc)
    ExibeAgora("Utc: .............", myDt)

    ' Change the Kind property of the current moment to DateTimeKind.Local and display the result.
    myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Local)
    ExibeAgora("Local: ...........", myDt)

    ' Change the Kind property of the current moment to DateTimeKind.Unspecified and display the result.
    myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified)
    ExibeAgora("Unspecified: .....", myDt)

    Dim dx As String
    dx = DateTime.Now.ToString
    dx = DateTime.Now.ToString("dd")
    dx = DateTime.Now.ToString("MM")
    dx = DateTime.Now.ToString("yyyy")
    dx = DateTime.Now.ToString("dd/MM/yyyy")
    dx = DateTime.Now.ToString("dd/mm/yyyy") 'errado    03/10/2013 veio 03/30/2013




    ' Display the value and Kind property of a DateTime structure, the
    ' DateTime structure converted to local time, and the DateTime
    ' structure converted to universal time.

    Public datePatt As String = "M/d/yyyy hh:mm:ss tt"

    Public Sub Teste2(ByVal title As String, ByVal inputDt As DateTime)
    Dim dispDt As DateTime = inputDt
    Dim dtString As String

    ' Display the original DateTime.
    dtString = dispDt.ToString(datePatt)
    Console.WriteLine("{0} {1}, Kind = {2}", title, dtString, dispDt.Kind)

    ' Convert inputDt to local time and display the result.
    ' If inputDt.Kind is DateTimeKind.Utc, the conversion is performed.
    ' If inputDt.Kind is DateTimeKind.Local, the conversion is not performed.
    ' If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
    ' performed as if inputDt was universal time.
    dispDt = inputDt.ToLocalTime()
    dtString = dispDt.ToString(datePatt)
    Console.WriteLine(" ToLocalTime: {0}, Kind = {1}", dtString, dispDt.Kind)

    ' Convert inputDt to universal time and display the result.
    ' If inputDt.Kind is DateTimeKind.Utc, the conversion is not performed.
    ' If inputDt.Kind is DateTimeKind.Local, the conversion is performed.
    ' If inputDt.Kind is DateTimeKind.Unspecified, the conversion is
    ' performed as if inputDt was local time.
    dispDt = inputDt.ToUniversalTime()
    dtString = dispDt.ToString(datePatt)
    Console.WriteLine(" ToUniversalTime: {0}, Kind = {1}", dtString, dispDt.Kind)
    Console.WriteLine()
    End Sub 'Display

    ' Display the value and Kind property for DateTime.Now and DateTime.UtcNow.

    Public Sub ExibeAgora(ByVal title As String, ByVal inputDt As DateTime)
    Dim dtString As String = inputDt.ToString(datePatt)
    Console.WriteLine("{0} {1}, Kind = {2}", title, dtString, inputDt.Kind)
    End Sub 'DisplayNow

    '
    'This code example produces the following results:
    '
    'UtcNow: .......... 5/6/2005 09:34:42 PM, Kind = Utc
    'Now: ............. 5/6/2005 02:34:42 PM, Kind = Local
    '
    'Utc: ............. 5/6/2005 02:34:42 PM, Kind = Utc
    ' ToLocalTime: 5/6/2005 07:34:42 AM, Kind = Local
    ' ToUniversalTime: 5/6/2005 02:34:42 PM, Kind = Utc
    '
    'Local: ........... 5/6/2005 02:34:42 PM, Kind = Local
    ' ToLocalTime: 5/6/2005 02:34:42 PM, Kind = Local
    ' ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc
    '
    'Unspecified: ..... 5/6/2005 02:34:42 PM, Kind = Unspecified
    ' ToLocalTime: 5/6/2005 07:34:42 AM, Kind = Local
    ' ToUniversalTime: 5/6/2005 09:34:42 PM, Kind = Utc

End Module