Time
Retorna hora corrente do sistema operacional no formato HH:MM:SS. String de 8 caracteres. Par natural de Date().
Assinatura: Time() -> cHora
Retorna: Character
Time() retorna a hora atual do SO no formato HH:MM:SS (8 chars exatos). E hora do servidor, nao do cliente. Diferente de Date(), nao tem variavel "dHoraBase" — sempre o SO real.
Sintaxe
Time() --> cHora // "HH:MM:SS"
Exemplos
Time() // "14:32:18"
SubStr(Time(), 1, 5) // "14:32" (so HH:MM)
SubStr(Time(), 1, 2) // "14" (so hora)
Casos praticos
1. Cronometrar trecho de codigo
User Function MedeTempo()
Local cIni := Time()
U_ProcessamentoPesado()
Local cFim := Time()
ConOut("Duracao: " + ElapTime(cIni, cFim))
Return
2. Log timestampado
Static Function _Log(cMsg)
ConOut(DToC(dDataBase) + " " + Time() + " | " + cMsg)
// 13/05/2026 14:32:18 | mensagem aqui
Return
3. Gerar nome de arquivo com timestamp
// "backup_20260513_143218.zip"
cArq := "backup_" + ;
DToS(dDataBase) + "_" + ;
StrTran(Time(), ":", "") + ".zip"
4. Bloquear acoes em horarios especificos
// Bloquear faturamento apos 18:00
If Time() > "18:00:00"
MsgAlert("Faturamento bloqueado apos 18h")
Return .F.
EndIf
// Comparacao funciona por ser string lexicografica:
// "18:00:00" < "18:30:00" < "20:00:00"
5. Validar horario comercial
Static Function _HoraComercial()
Local cHora := Time()
Return cHora >= "08:00:00" .And. cHora <= "18:00:00"
Pegadinhas
- String, nao Numeric — comparacoes lexicograficas funcionam pelo formato fixo HH:MM:SS.
- Server time, nao client — JOB executando em outra timezone pode pegar hora diferente do esperado.
- Sem milissegundos — pra precisao maior use
Seconds()que retorna segundos desde meia-noite. - Tempo decorrido entre Time() ao redor de meia-noite quebra — use
Seconds()e cuidado com transicao do dia. - JOB longo pode pegar Time() em momentos descontinuos — registre Time() no inicio E fim de cada acao critica.