Página 1 de 1

Datas

Enviado: 28 Fev 2007 13:34
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!

Enviado: 28 Fev 2007 14:18
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

Enviado: 01 Mar 2007 09:39
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.