Guide
O que é carimbo de data/hora Unix? Guia completo para a época
O que é carimbo de data/hora Unix?
Um carimbo de data e hora Unix (também conhecido como horário Unix, horário POSIX ou horário de época) é um sistema para rastrear o tempo como um único número. Representa o número de segundos decorridos desde 00:00:00 UTC em 1º de janeiro de 1970, excluindo segundos bissextos. Este momento é chamado de época Unix.
Por exemplo, o carimbo de data/hora Unix 1704067200 representa 1º de janeiro de 2024, 00:00:00 UTC.
Principais características
- Simples: apenas um número para representar qualquer momento
- Universal: funciona da mesma forma em todos os fusos horários e sistemas
- Eficiente: Fácil de armazenar, comparar e calcular com
- Padronizado: Amplamente adotado em linguagens de programação e bancos de dados
Por que o carimbo de data/hora do Unix começa em 1º de janeiro de 1970?
O carimbo de data/hora Unix começa em 1º de janeiro de 1970, porque foi nessa época que o sistema operacional Unix estava sendo desenvolvido. Os desenvolvedores precisavam de um ponto de referência para seu sistema de tempo e escolheram uma data recente e redonda que fosse fácil de lembrar.
Esta data é conhecida como época Unix ou época. Todos os carimbos de data/hora Unix são calculados como o número de segundos desde este momento.
Contexto Histórico
- 1969-1970: Desenvolvimento do sistema operacional Unix no Bell Labs
- Necessidade de simplicidade: os desenvolvedores queriam uma maneira simples de controlar o tempo
- Sistemas de 32 bits: Originalmente projetados para funcionar com números inteiros de 32 bits
- Ampla adoção: tornou-se o padrão para cronometragem computadorizada
Como funciona o carimbo de data/hora Unix
Conceito Básico
O carimbo de data/hora Unix é simplesmente um contador que aumenta 1 a cada segundo:
Unix Epoch (Start): 0 → January 1, 1970, 00:00:00 UTC
After 1 second: 1 → January 1, 1970, 00:00:01 UTC
After 1 hour: 3600 → January 1, 1970, 01:00:00 UTC
After 1 day: 86400 → January 2, 1970, 00:00:00 UTC
After 1 year: 31536000 → January 1, 1971, 00:00:00 UTC
Today (2025): ~1735689600 → Current time
Níveis de precisão
Os carimbos de data/hora Unix podem ter diferentes níveis de precisão:
| Precisão | Dígitos | Exemplo | Descrição |
|---|---|---|---|
| Segundos | 10 | 1704067200 | Carimbo de data/hora Unix padrão |
| Milissegundos | 13 | 1704067200000 | Usado em JavaScript, Java |
| Microssegundos | 16 | 1704067200000000 | Sistemas de alta precisão |
| Nanossegundos | 19 | 1704067200000000000 | Cronometragem ultraprecisa |
Timestamp Unix em diferentes linguagens de programação
###JavaScript/Node.js
// Get current Unix timestamp (milliseconds)
const timestamp = Date.now();
console.log(timestamp); // 1704067200000
// Get Unix timestamp in seconds
const timestampSeconds = Math.floor(Date.now() / 1000);
console.log(timestampSeconds); // 1704067200
// Convert Unix timestamp to Date
const date = new Date(1704067200000);
console.log(date); // 2024-01-01T00:00:00.000Z
// Convert Date to Unix timestamp
const timestamp2 = new Date('2024-01-01').getTime();
console.log(timestamp2); // 1704067200000
###Píton
import time
from datetime import datetime
# Get current Unix timestamp
timestamp = time.time()
print(timestamp) # 1704067200.123456
# Get Unix timestamp (integer)
timestamp_int = int(time.time())
print(timestamp_int) # 1704067200
# Convert Unix timestamp to datetime
dt = datetime.fromtimestamp(1704067200)
print(dt) # 2024-01-01 00:00:00
# Convert datetime to Unix timestamp
timestamp2 = datetime(2024, 1, 1).timestamp()
print(timestamp2) # 1704067200.0
PHP
<?php
// Get current Unix timestamp
$timestamp = time();
echo $timestamp; // 1704067200
// Convert Unix timestamp to date
$date = date('Y-m-d H:i:s', 1704067200);
echo $date; // 2024-01-01 00:00:00
// Convert date to Unix timestamp
$timestamp2 = strtotime('2024-01-01');
echo $timestamp2; // 1704067200
?>
###Java
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
// Get current Unix timestamp (seconds)
long timestamp = Instant.now().getEpochSecond();
System.out.println(timestamp); // 1704067200
// Get Unix timestamp (milliseconds)
long timestampMillis = System.currentTimeMillis();
System.out.println(timestampMillis); // 1704067200000
// Convert Unix timestamp to LocalDateTime
LocalDateTime dateTime = LocalDateTime.ofEpochSecond(
1704067200, 0, ZoneOffset.UTC
);
System.out.println(dateTime); // 2024-01-01T00:00:00
// Convert LocalDateTime to Unix timestamp
long timestamp2 = dateTime.toEpochSecond(ZoneOffset.UTC);
System.out.println(timestamp2); // 1704067200
Ir
package main
import (
"fmt"
"time"
)
func main() {
// Get current Unix timestamp
timestamp := time.Now().Unix()
fmt.Println(timestamp) // 1704067200
// Convert Unix timestamp to Time
t := time.Unix(1704067200, 0)
fmt.Println(t) // 2024-01-01 00:00:00 +0000 UTC
// Convert Time to Unix timestamp
timestamp2 := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC).Unix()
fmt.Println(timestamp2) // 1704067200
}
Vantagens do carimbo de data/hora Unix
1. Simplicidade
É mais fácil trabalhar com um único número do que com sequências complexas de data/hora.
2. Independência de fuso horário
Os carimbos de data/hora Unix estão sempre em UTC, eliminando confusão de fuso horário.
3. Cálculos fáceis
Calcule as diferenças de tempo por subtração simples:
const start = 1704067200; // Jan 1, 2024
const end = 1704153600; // Jan 2, 2024
const difference = end - start; // 86400 seconds = 1 day
4. Armazenamento eficiente
Armazenar um único número inteiro é mais eficiente do que armazenar strings de data.
5. Classificação e comparação
Fácil de classificar e comparar carimbos de data/hora:
const timestamps = [1704153600, 1704067200, 1704240000];
timestamps.sort((a, b) => a - b); // Chronological order
Limitações do carimbo de data/hora Unix
1. Problema do ano 2038
Em sistemas de 32 bits, os carimbos de data/hora Unix transbordarão em 19 de janeiro de 2038, 03:14:07 UTC. Isso ocorre porque inteiros assinados de 32 bits só podem representar valores até 2.147.483.647.
Solução: use carimbos de data/hora de 64 bits, que podem representar datas no futuro distante.
2. Segundos bissextos
Os carimbos de data e hora Unix ignoram os segundos bissextos, que ocasionalmente são adicionados ao UTC para explicar a rotação irregular da Terra.
3. Limitações de precisão
Os carimbos de data/hora Unix padrão (segundos) podem não ser precisos o suficiente para alguns aplicativos. Use milissegundos ou microssegundos para maior precisão.
4. Legibilidade Humana
Os carimbos de data/hora Unix não são legíveis por humanos. Você precisa convertê-los para exibir datas significativas.
Casos de uso comuns
1. Carimbos de data e hora do banco de dados
Armazene tempos de criação e modificação de forma eficiente:
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50),
created_at BIGINT,
updated_at BIGINT
);
2. Respostas da API
Incluir carimbos de data/hora nas respostas da API:
{
"id": 123,
"message": "Hello World",
"timestamp": 1704067200,
"created_at": 1704067200
}
3. Arquivos de log
Acompanhe quando os eventos ocorrem:
[1704067200] INFO: User logged in
[1704067205] WARNING: Failed login attempt
[1704067210] ERROR: Database connection failed
4. Cache e Expiração
Defina os tempos de expiração do cache:
const cacheExpiry = Date.now() / 1000 + 3600; // Expire in 1 hour
5. Gerenciamento de sessão
Rastreie os carimbos de data/hora da sessão do usuário:
const sessionStart = Math.floor(Date.now() / 1000);
const sessionExpiry = sessionStart + 1800; // 30 minutes
Melhores práticas
1. Sempre use UTC
Armazene carimbos de data/hora Unix em UTC para evitar problemas de fuso horário.
2. Escolha a precisão apropriada
- Use segundos para a maioria dos aplicativos
- Use milissegundos para aplicações web (JavaScript)
- Use microssegundos ou nanossegundos para cronometragem de alta precisão
3. Use números inteiros de 64 bits
Evite o problema do ano 2038 usando carimbos de data/hora de 64 bits.
4. Validar carimbos de data e hora
Verifique se os carimbos de data/hora estão dentro de intervalos razoáveis:
function isValidTimestamp(timestamp) {
const min = 0; // Unix epoch
const max = 2147483647; // Year 2038 for 32-bit
return timestamp >= min && timestamp <= max;
}
5. Precisão do documento
Sempre documente se seus carimbos de data/hora estão em segundos, milissegundos ou outras unidades.
Convertendo carimbos de data/hora Unix
Ferramentas on-line
Use MakeTimestamp.com para converter carimbos de data/hora Unix em datas legíveis por humanos e vice-versa.
Linha de comando
Linux/Mac:
# Current Unix timestamp
date +%s
# Convert Unix timestamp to date
date -d @1704067200
# Convert date to Unix timestamp
date -d "2024-01-01" +%s
Windows PowerShell:
powershell
# Current Unix timestamp
[int][double]::Parse((Get-Date -UFormat %s))
# Convert Unix timestamp to date
[DateTimeOffset]::FromUnixTimeSeconds(1704067200).DateTime
Conceitos Relacionados
ISO 8601
Um formato padronizado de data/hora: 2024-01-01T00:00:00Z
RFC 3339
Formato de carimbo de data/hora da Internet: 2024-01-01T00:00:00+00:00
Hora POSIX
Outro nome para o horário Unix, definido pelo padrão POSIX.
Época
Termo geral para o tempo medido a partir de um ponto de partida específico (época).
Perguntas frequentes
O que representa o timestamp 0 do Unix?
O carimbo de data/hora Unix 0 representa a época Unix: 1º de janeiro de 1970, 00:00:00 UTC.
Os carimbos de data/hora do Unix podem ser negativos?
Sim! Os carimbos de data/hora Unix negativos representam datas anteriores a 1º de janeiro de 1970. Por exemplo, -86400 representa 31 de dezembro de 1969.
Por que alguns carimbos de data/hora têm 13 dígitos?
Os carimbos de data/hora de 13 dígitos estão em milissegundos (comumente usados em JavaScript), enquanto os carimbos de data/hora de 10 dígitos estão em segundos.
Como faço para converter entre segundos e milissegundos?
- Segundos em milissegundos: Multiplique por 1000
- Milissegundos em segundos: Divida por 1000
O que acontece depois do ano de 2038?
Em sistemas de 64 bits, os carimbos de data/hora Unix podem representar datas até o ano 292.277.026.596. Em sistemas de 32 bits, você precisará atualizar ou usar representações de hora alternativas.
Os carimbos de data/hora do Unix são afetados pelos fusos horários?
Não! Os carimbos de data/hora Unix estão sempre em UTC. Os fusos horários são aplicados apenas ao exibir o carimbo de data/hora como uma data legível por humanos.
Resumo
O carimbo de data/hora Unix é uma maneira simples, eficiente e universal de representar o tempo como um único número. Ele conta os segundos desde 1º de janeiro de 1970 (época Unix) e é amplamente utilizado em programação, bancos de dados e APIs.
Principais conclusões:
- Carimbo de data e hora Unix = segundos desde 1º de janeiro de 1970, 00:00:00 UTC
- Simples, universal e eficiente para controle de tempo
- Disponível em vários níveis de precisão (segundos, milissegundos, etc.)
- Cuidado com o problema do ano 2038 em sistemas de 32 bits
- Sempre armazene carimbos de data/hora em UTC
Pronto para trabalhar com carimbos de data/hora Unix? Experimente nosso Unix Timestamp Converter para converter instantaneamente entre carimbos de data e hora e datas legíveis por humanos!