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