Date Resultado = Date (Expressão) AS Date Retorna a Expressão como um valor de Data e Hora. O Gambas trata o tempo de uma maneira diferente a que estamos acostumados. Para manipular o tempo utiliza o comando Date. As particularidades deste comando está exposto nos parágrafos seguintes. Quando utilizamos inteiros separados por vírgula para retornar uma Data o formato correto para entrada é (Ano, Mês, Dia). A data retornada é no formato local, por exemplo, no Brasil a data retornada é (Dia - Mês - Ano Hora : Minuto : Segundo) Data = Date(Ano, Mes, Dia, Horas, Minutos, Segundos) AS Date 01 Public Sub Main() 02 Print Date(2013, 4, 25) '25-04-2013 00:00:00 03 End Quando a entrada da Data é do tipo String a data deve ser escrita no formato americano (Mês, Dia, Ano). O retorno é no formato local. 01 Public Sub Main() 02 Print Date("04/25/2013") '25-04-2013 00:00:00 03 End A data no terminal é retornada no formato das configurações regionais. No entanto se usarmos um objeto, por exemplo um TextBox ou um Label, a data é retornada no formato americano (Mês, Dia, Ano). 01 Public Sub Main() 02 Print Date(2013, 4, 25) '25-04-2013 00:00:00 03 Print Date("04/25/2013")'25-04-2013 00:00:00 04 End 3 DateAdd Resultado = DateAdd(Data as Date, Período AS Integer, Quantidade AS Integer)AS Date DateAdd, Adiciona de forma simples e prático um período específico a uma determinada data. • Data é a data inicial; a qual vamos adicionar um período. • Período é o tipo de período: ano, mês, dia, semana… • Quantidade é o número de períodos a adicionar. Como exemplo, vamos imaginar que matriculamos um aluno e desejamos saber a data do próximo vencimento da mensalidade. Utilizamos a sintaxe DataAdd. Observe que no exemplo a seguir utilizamos duas formas distintas para inserir a data, uma String e o retorno da função Date. Como podemos ver o resultado é o mesmo para as duas formas de entrada dos dados. 01 Public Sub Main() 02 Print DateAdd("04/25/2013", gb.Month, 1) 03 Print DateAdd(Date(2013, 4, 25), gb.Month, 1) 04 End Determinamos a data de matricula (04/25/2013) o período gb.Month (Mês) e por fim a quantidade de períodos (1). se fosse trimestral colocaríamos a quantidade (3) ou gb.Quarter (quarto de ano) e seria somado 3 meses. 01 Public Sub Main() 02 Print DateAdd("04/25/2013", gb.Month, 1) 03 Print DateAdd("04/25/2013", gb.Month, 3) 04 Print DateAdd("04/25/2013", gb.Quarter, 1) 05 End A tabela a seguir mostra as constantes que podemos utilizar como período. Observe os valores inteiros que representa cada uma delas. Constantes gb Constante Efeito Inteiro gb.Second Segundos. 2 gb.Minute Minutos. 3 gb.Hour Horas. 4 gb.Day Dias. 5 gb.Week Semanas. 6 gb.WeekDay Dias da semana (ignora Sábado e Domingo). 7 gb.Month Meses. 8 gb.Quarter Quartos de ano (trimestres). 9 gb.Year Anos. 10 Cada constante gb tem um número inteiro que a representa, no lugar de escrever gb. Month por 4 exemplo, podemos colocar o número (8), o resultado é o mesmo. 01 Public Sub Main() 02 Print DateAdd("04/25/2013", 8, 1) 03 End DateDif Resultado = DateDiff(Data1 AS Date, Data2 AS Date, Período AS Integer) AS Integer Retorna o número de períodos entre duas datas. • Data1 é a data maior. • Data2 é a data menor. • Período é o tipo de período: ano, mês, dia, semana… Enquanto que a função DateAdd adiciona períodos a uma determinada data, DateDiff retorna a quantidade de períodos entre duas datas. Com esta função podemos facilmente descobrir por exemplo, quantos anos uma pessoa tem ou até os meses, dias e etc. Somente períodos inteiros são retornados e resultado é arredondado. 01 Public Sub Main() 02 Print DateDiff("04/25/2013", "04/25/2014", gb.Month ) 03 End As constantes que podemos utilizar como período são as mesmas utilizadas em DateAdd. 01 Public Sub Main() 02 Print DateDiff("04/25/2013", "04/25/2014", gb.Day) 03 Print DateDiff("04/25/2013", "04/25/2014", gb.Week) 04 Print DateDiff("04/25/2013", "04/25/2014", gb.Quarter) 05 Print DateDiff("04/25/2013", "04/25/2014", gb.Year) 06 End Se por acaso quisermos descobrir quantos anos e quantos meses uma pessoa tem, podemos usar a constante gb.Month e dividimos o resulta obtido por 12. Para obter a quantidade de anos utilizamos o operando Div que devolve apenas a parte inteira da operação arredondando para baixo. Para obter os meses, utilizamos o operando Mod, que devolve apenas o resto do quociente da operação arredondando para cima. 01 Public Sub Main() 02 Dim Idade AS Integer 03 Idade = DateDiff("04/25/2013", "10/25/2014", gb.Month ) 04 Print Idade Div 12 'Anos = 1 05 Print Idade Mod 12 'Meses = 8 06 End 5