Datas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

UKclipper
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 13 Fev 2007 16:29

Datas

Mensagem por UKclipper »

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!
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

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
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)
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

"- 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.
"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}
Responder