Olá, pessoal!
Tenho algumas dúvidas a respeito do uso de datas:
- Como verificar se o valor digitado em uma variável é uma data válida.
- Como somar dias, meses e anos a uma data.
- Como subtrair dias, meses e anos de uma data.
- Como saber o último dia do mês.
Se não for pedir muito, alguém sabe como fazer tudo isso?
Valeu, gente!
Datas
Moderador: Moderadores
Prezado Colega
Para só aceitar uma data válida basta utilizar uma variavel do tipo data.
SET CENTURY ON
SET EPOCH TO 1999
MDATA=CTOD(SPACE(8))
@ 10,00 GET MDATA PICT "99/99/9999"
Na caso acima só aceita data válida.
--------------------------------------------------------------------------
Para somar ou subtrair dias de uma data é simples :
DIA=DATE()
NOVODIA1=DIA+60 * será a data do computador + 60 dias
NOVODIA2=DIA-45 * será a data do computador - 45 dias
Para somar anos a uma data
ANO=YEAR(DATE())
ADDANO=STR(ANO+15,4)
NOVOANO1=CTOD(SUBSTR(DTOC(DATE()),1,6)+ADDANO)
Neste caso o ano será adicionado 15 anos
SUBANO=STR(ANO-8,4)
NOVOANO1=CTOD(SUBSTR(DTOC(DATE()),1,6)+SUBANO)
Neste caso o ano será subtraido 8 anos
Para adcionar ou subtrair meses de uma data
ADDMONTH()
Função da Clipper Tools
Para saber o último dia do mês
EOM()
Função da Clipper Tools
Até logo.
Marcelo
Para só aceitar uma data válida basta utilizar uma variavel do tipo data.
SET CENTURY ON
SET EPOCH TO 1999
MDATA=CTOD(SPACE(8))
@ 10,00 GET MDATA PICT "99/99/9999"
Na caso acima só aceita data válida.
--------------------------------------------------------------------------
Para somar ou subtrair dias de uma data é simples :
DIA=DATE()
NOVODIA1=DIA+60 * será a data do computador + 60 dias
NOVODIA2=DIA-45 * será a data do computador - 45 dias
Para somar anos a uma data
ANO=YEAR(DATE())
ADDANO=STR(ANO+15,4)
NOVOANO1=CTOD(SUBSTR(DTOC(DATE()),1,6)+ADDANO)
Neste caso o ano será adicionado 15 anos
SUBANO=STR(ANO-8,4)
NOVOANO1=CTOD(SUBSTR(DTOC(DATE()),1,6)+SUBANO)
Neste caso o ano será subtraido 8 anos
Para adcionar ou subtrair meses de uma data
ADDMONTH()
Função da Clipper Tools
Para saber o último dia do mês
EOM()
Função da Clipper Tools
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
"- Como verificar se o valor digitado em uma variável é uma data válida. "
Quando vc inicia uma variável do tipo data, quaisquer entrada de dados é verificado automaticamente. Se vc entrar com uma data inválida, o get não aceita a entrada
xdata := ctod('')
// coloquei isto no início do sistema.
SET CENTURY ON // Ativa mostrar data de 4 digitos (século)
SET EPOCH TO 1930 // Eu uso assim
set date british // Define data como dd/mm/aa
xdata := ctod('')
@ 10,00 GET xdata // Não precisa colocar a picture
"- Como somar dias, meses e anos a uma data. "
Para somar dias, vc soma os números na data.
xdata += 5
Se vc não tem a CATools, pode montar uma função para somar meses e outra para somar anos.
"- Como subtrair dias, meses e anos de uma data. "
Mesmo processo que o utilizado para somar dias.
"- Como saber o último dia do mês."
Eu tive que criar uma função para isso.
function _eom(q_data)
local a1, a2
a1 := q_data
a2 := month(q_data)
// Procura o próximo mes
while month(a1) = a2
a1++
end
// Volta para o dia anterior. Este é o último dia do mes.
a1--
return(a1)
- Para saber quantos dias separa uma data de outra, subtraia como faria com números.
Quando vc inicia uma variável do tipo data, quaisquer entrada de dados é verificado automaticamente. Se vc entrar com uma data inválida, o get não aceita a entrada
xdata := ctod('')
// coloquei isto no início do sistema.
SET CENTURY ON // Ativa mostrar data de 4 digitos (século)
SET EPOCH TO 1930 // Eu uso assim
set date british // Define data como dd/mm/aa
xdata := ctod('')
@ 10,00 GET xdata // Não precisa colocar a picture
"- Como somar dias, meses e anos a uma data. "
Para somar dias, vc soma os números na data.
xdata += 5
Se vc não tem a CATools, pode montar uma função para somar meses e outra para somar anos.
"- Como subtrair dias, meses e anos de uma data. "
Mesmo processo que o utilizado para somar dias.
"- Como saber o último dia do mês."
Eu tive que criar uma função para isso.
function _eom(q_data)
local a1, a2
a1 := q_data
a2 := month(q_data)
// Procura o próximo mes
while month(a1) = a2
a1++
end
// Volta para o dia anterior. Este é o último dia do mes.
a1--
return(a1)
- Para saber quantos dias separa uma data de outra, subtraia como faria com números.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}

