Recursos de timestamp

Cheatsheet do formato Timestamp: Guia de referência rápida

Visão geral

Esta planilha abrangente fornece referência rápida para todos os formatos de carimbo de data/hora comuns usados em programação e troca de dados. Todos os exemplos usam 1º de janeiro de 2024, 12:00:00 UTC como horário de referência.

Tabela de referência rápida

FormatoExemploComprimentoCaso de uso
Segundos Unix170411040010 dígitosSistemas legados, APIs
Milissegundos Unix170411040000013 dígitosJavaScript, Java, APIs modernas
Microssegundos Unix170411040000000016 dígitosRegistro de alta precisão
Nanossegundos Unix170411040000000000019 dígitosMonitoramento de desempenho
ISO 8601 (UTC)2024-01-01T12:00:00ZVariávelPadrão internacional
ISO 8601 (fuso horário)2024-01-01T12:00:00+00:00VariávelDados com reconhecimento de fuso horário
RFC 33392024-01-01T12:00:00.000ZVariávelCarimbos de data e hora da Internet
RFC 2822Seg, 01 de janeiro de 2024 12:00:00 +0000VariávelCabeçalhos de e-mail
SQL DATA HORA2024-01-01 12:00:0019 caracteresArmazenamento de banco de dados

Formatos de carimbo de data/hora Unix

Segundos (10 dígitos)

Formato: número inteiro representando segundos desde 1º de janeiro de 1970, 00:00:00 UTC

1704110400

Quando usar:

  • Sistemas legados e APIs
  • Eficiência de armazenamento (4 bytes como int32)
  • Considerações sobre o problema do ano 2038

Exemplos de código:

// JavaScript
const timestamp = Math.floor(Date.now() / 1000);
// 1704110400

const date = new Date(timestamp * 1000);
// 2024-01-01T12:00:00.000Z
# Python
import time
timestamp = int(time.time())
# 1704110400

from datetime import datetime
date = datetime.fromtimestamp(timestamp)
# 2024-01-01 12:00:00
// PHP
$timestamp = time();
// 1704110400

$date = date('Y-m-d H:i:s', $timestamp);
// 2024-01-01 12:00:00
// Go
import "time"

timestamp := time.Now().Unix()
// 1704110400

date := time.Unix(timestamp, 0)
// 2024-01-01 12:00:00 +0000 UTC

Milissegundos (13 dígitos)

Formato: número inteiro representando milissegundos desde a época Unix

1704110400000

Quando usar:

  • Aplicativos JavaScript (padrão para Date.now())
  • APIs web modernas
  • Precisão de milissegundos necessária

Exemplos de código:

// JavaScript
const timestamp = Date.now();
// 1704110400000

const date = new Date(timestamp);
// 2024-01-01T12:00:00.000Z
# Python
import time
timestamp = int(time.time() * 1000)
# 1704110400000

from datetime import datetime
date = datetime.fromtimestamp(timestamp / 1000)
// Java
long timestamp = System.currentTimeMillis();
// 1704110400000

Date date = new Date(timestamp);
// Mon Jan 01 12:00:00 UTC 2024
// C#
long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
// 1704110400000

DateTimeOffset date = DateTimeOffset.FromUnixTimeMilliseconds(timestamp);

Microssegundos (16 dígitos)

Formato: número inteiro representando microssegundos desde a época Unix

1704110400000000

Quando usar:

  • Registro e monitoramento de alta precisão
  • Benchmarking de desempenho
  • Aplicações científicas

Exemplos de código:

# Python
import time
timestamp = int(time.time() * 1_000_000)
# 1704110400000000

date = datetime.fromtimestamp(timestamp / 1_000_000)
// Go
timestamp := time.Now().UnixMicro()
// 1704110400000000

date := time.UnixMicro(timestamp)
// Rust
use std::time::{SystemTime, UNIX_EPOCH};

let timestamp = SystemTime::now()
    .duration_since(UNIX_EPOCH)
    .unwrap()
    .as_micros();
// 1704110400000000

Nanossegundos (19 dígitos)

Formato: número inteiro representando nanossegundos desde a época Unix

1704110400000000000

Quando usar:

  • Requisitos de tempo ultraprecisos
  • Perfil de desempenho
  • Sistemas de negociação

Exemplos de código:

// Go
timestamp := time.Now().UnixNano()
// 1704110400000000000

date := time.Unix(0, timestamp)
// Rust
let timestamp = SystemTime::now()
    .duration_since(UNIX_EPOCH)
    .unwrap()
    .as_nanos();
// 1704110400000000000

Formatos ISO 8601

Formato Básico (UTC)

Formato: `AAAA-MM-DDTHH:MM:SSZ

2024-01-01T12:00:00Z
```
**Quando usar:**
- Troca internacional de dados
-API RESTful
- Armazenamento de dados JSON

**Exemplos de código:**
```javascript
// JavaScript
const isoString = new Date().toISOString();
// 2024-01-01T12:00:00.000Z
```

```python
# Python
from datetime import datetime, timezone
iso_string = datetime.now(timezone.utc).isoformat().replace('+00:00', 'Z')
# 2024-01-01T12:00:00Z
```

```php
// PHP
$iso_string = gmdate('Y-m-d\TH:i:s\Z');
// 2024-01-01T12:00:00Z
```
### Formato estendido (com milissegundos)

**Formato**: `AAAA-MM-DDTHH:MM:SS.sssZ

2024-01-01T12:00:00.000Z


```javascript
// JavaScript (default)
new Date().toISOString();
// 2024-01-01T12:00:00.000Z
# Python
datetime.now(timezone.utc).isoformat(timespec='milliseconds').replace('+00:00', 'Z')
# 2024-01-01T12:00:00.000Z

Com deslocamento de fuso horário

Formato: `AAAA-MM-DDTHH:MM:SS±HH:MM

2024-01-01T12:00:00+00:00
2024-01-01T17:30:00+05:30  # IST
2024-01-01T07:00:00-05:00  # EST
```
**Exemplos de código:**
```javascript
// JavaScript
const date = new Date();
const offset = -date.getTimezoneOffset();
const sign = offset >= 0 ? '+' : '-';
const hours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, '0');
const minutes = String(Math.abs(offset) % 60).padStart(2, '0');
const iso = date.toISOString().replace('Z', `${sign}${hours}:${minutes}`);
// 2024-01-01T12:00:00.000+00:00
```

```python
# Python
datetime.now(timezone.utc).isoformat()
# 2024-01-01T12:00:00+00:00

# With specific timezone
from datetime import timezone, timedelta
ist = timezone(timedelta(hours=5, minutes=30))
datetime.now(ist).isoformat()
# 2024-01-01T17:30:00+05:30
```
### Somente data

**Formato**: `AAAA-MM-DD

2024-01-01


```javascript
// JavaScript
new Date().toISOString().split('T')[0];
// 2024-01-01
# Python
datetime.now().date().isoformat()
# 2024-01-01

Somente tempo

Formato: HH:MM:SS ou `HH:MM:SS.sss

12:00:00
12:00:00.000
```

```javascript
// JavaScript
new Date().toISOString().split('T')[1];
// 12:00:00.000Z
```

```python
# Python
datetime.now().time().isoformat()
# 12:00:00.000000
```
---

## Formato RFC 3339

**Formato**: `AAAA-MM-DDTHH:MM:SS.sss±HH:MM` ou `...Z

2024-01-01T12:00:00.000Z 2024-01-01T12:00:00.000+00:00

**Diferença da ISO 8601:**
- Sempre inclui milissegundos
- Sempre inclui fuso horário
- Especificação mais rigorosa

**Exemplos de código:**
```javascript
// JavaScript
new Date().toISOString(); // Already RFC 3339 compliant
// 2024-01-01T12:00:00.000Z
# Python
from datetime import datetime, timezone
datetime.now(timezone.utc).isoformat()
# 2024-01-01T12:00:00.000000+00:00
// Go
time.Now().UTC().Format(time.RFC3339Nano)
// 2024-01-01T12:00:00.000000000Z

Formato RFC 2822

Formato: `Dia, DD Seg AAAA HH:MM:SS ±HHMM

Mon, 01 Jan 2024 12:00:00 +0000
Mon, 01 Jan 2024 12:00:00 GMT
```
**Quando usar:**
- Cabeçalhos de e-mail (campo Data)
- Cabeçalhos HTTP
- feeds RSS

**Exemplos de código:**
```javascript
// JavaScript
new Date().toUTCString();
// Mon, 01 Jan 2024 12:00:00 GMT
```

```python
# Python
from email.utils import formatdate
formatdate(timeval=None, localtime=False, usegmt=True)
# Mon, 01 Jan 2024 12:00:00 GMT
```

```php
// PHP
date('r');
// Mon, 01 Jan 2024 12:00:00 +0000
```
---

## Formatos de carimbo de data/hora SQL

### MySQL/MariaDB DATETIME

**Formato**: `AAAA-MM-DD HH:MM:SS

2024-01-01 12:00:00


```sql
-- MySQL
SELECT NOW();
-- 2024-01-01 12:00:00

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
-- 2024-01-01 12:00:00

PostgreSQL TIMESTAMP

Formato: `AAAA-MM-DD HH:MM:SS.ssssss±TZ

2024-01-01 12:00:00.000000+00
2024-01-01 12:00:00+00
```

```sql
-- PostgreSQL
SELECT NOW();
-- 2024-01-01 12:00:00.000000+00

SELECT CURRENT_TIMESTAMP;
-- 2024-01-01 12:00:00.000000+00
```
### SQLite DATETIME

**Formato**: `AAAA-MM-DD HH:MM:SS` (armazenado como texto)
```
2024-01-01 12:00:00
```

```sql
-- SQLite
SELECT datetime('now');
-- 2024-01-01 12:00:00

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
-- 2024-01-01 12:00:00
```
###Microsoft SQL Server

**Formato**: `AAAA-MM-DD HH:MM:SS.sss

2024-01-01 12:00:00.000


```sql
-- SQL Server
SELECT GETUTCDATE();
-- 2024-01-01 12:00:00.000

SELECT FORMAT(GETUTCDATE(), 'yyyy-MM-dd HH:mm:ss.fff');
-- 2024-01-01 12:00:00.000

Formatos específicos do idioma

JavaScript

// Various formats
const date = new Date();

// ISO 8601
date.toISOString();                    // 2024-01-01T12:00:00.000Z

// Locale string
date.toLocaleString();                  // 1/1/2024, 12:00:00 PM

// UTC string
date.toUTCString();                     // Mon, 01 Jan 2024 12:00:00 GMT

// Date only
date.toLocaleDateString();              // 1/1/2024

// Time only
date.toLocaleTimeString();              // 12:00:00 PM

// Custom format
date.toLocaleString('en-US', {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit',
  hour: '2-digit',
  minute: '2-digit',
  second: '2-digit',
  hour12: false
});
// 01/01/2024, 12:00:00

Códigos Python strftime

from datetime import datetime

dt = datetime(2024, 1, 1, 12, 0, 0)

# Common formats
dt.strftime('%Y-%m-%d')                 # 2024-01-01
dt.strftime('%Y-%m-%d %H:%M:%S')       # 2024-01-01 12:00:00
dt.strftime('%Y-%m-%dT%H:%M:%SZ')      # 2024-01-01T12:00:00Z
dt.strftime('%d/%m/%Y')                 # 01/01/2024
dt.strftime('%m/%d/%Y')                 # 01/01/2024
dt.strftime('%B %d, %Y')                # January 01, 2024
dt.strftime('%A, %B %d, %Y')           # Monday, January 01, 2024
dt.strftime('%I:%M %p')                 # 12:00 PM

PHP data() Formato

<?php
$timestamp = 1704110400;

// Common formats
date('Y-m-d', $timestamp);              // 2024-01-01
date('Y-m-d H:i:s', $timestamp);       // 2024-01-01 12:00:00
date('c', $timestamp);                  // 2024-01-01T12:00:00+00:00 (ISO 8601)
date('r', $timestamp);                  // Mon, 01 Jan 2024 12:00:00 +0000 (RFC 2822)
date('U', $timestamp);                  // 1704110400 (Unix timestamp)
date('d/m/Y', $timestamp);              // 01/01/2024
date('m/d/Y', $timestamp);              // 01/01/2024
date('F j, Y', $timestamp);             // January 1, 2024
date('l, F j, Y', $timestamp);         // Monday, January 1, 2024
date('g:i A', $timestamp);              // 12:00 PM

Ir formato de hora

package main

import (
    "time"
)

func main() {
    t := time.Date(2024, 1, 1, 12, 0, 0, 0, time.UTC)

    // Standard formats
    t.Format(time.RFC3339)              // 2024-01-01T12:00:00Z
    t.Format(time.RFC3339Nano)          // 2024-01-01T12:00:00.000000000Z
    t.Format(time.RFC822)               // 01 Jan 24 12:00 UTC
    t.Format(time.RFC1123)              // Mon, 01 Jan 2024 12:00:00 UTC

    // Custom formats (using reference time: Jan 2 15:04:05 2006 MST)
    t.Format("2006-01-02")              // 2024-01-01
    t.Format("2006-01-02 15:04:05")    // 2024-01-01 12:00:00
    t.Format("01/02/2006")              // 01/01/2024
    t.Format("January 2, 2006")         // January 1, 2024
    t.Format("3:04 PM")                 // 12:00 PM
}

Java SimpleDateFormat

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

Date date = new Date(1704110400000L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

// Common patterns
"yyyy-MM-dd"                            // 2024-01-01
"yyyy-MM-dd HH:mm:ss"                  // 2024-01-01 12:00:00
"yyyy-MM-dd'T'HH:mm:ss'Z'"            // 2024-01-01T12:00:00Z
"dd/MM/yyyy"                            // 01/01/2024
"MM/dd/yyyy"                            // 01/01/2024
"MMMM d, yyyy"                          // January 1, 2024
"EEEE, MMMM d, yyyy"                   // Monday, January 1, 2024
"h:mm a"                                // 12:00 PM

Referência rápida de conversão de formato

###Unix→ISO 8601

// JavaScript
new Date(1704110400000).toISOString();
// 2024-01-01T12:00:00.000Z
# Python
from datetime import datetime, timezone
datetime.fromtimestamp(1704110400, timezone.utc).isoformat()
# 2024-01-01T12:00:00+00:00

ISO 8601 → Unix

// JavaScript
new Date('2024-01-01T12:00:00Z').getTime();
// 1704110400000
# Python
from datetime import datetime
datetime.fromisoformat('2024-01-01T12:00:00+00:00').timestamp()
# 1704110400.0

RFC 2822 → ISO 8601

// JavaScript
new Date('Mon, 01 Jan 2024 12:00:00 GMT').toISOString();
// 2024-01-01T12:00:00.000Z
# Python
from email.utils import parsedate_to_datetime
parsedate_to_datetime('Mon, 01 Jan 2024 12:00:00 GMT').isoformat()
# 2024-01-01T12:00:00+00:00

Melhores práticas

Recomendações de armazenamento

  1. Bancos de dados: Use o tipo nativo TIMESTAMP com suporte de fuso horário
  2. APIs: use ISO 8601 com fuso horário para portabilidade
  3. Processamento Interno: Use milissegundos Unix para cálculos
  4. Registro: use ISO 8601 com milissegundos e fuso horário

Tratamento de fuso horário

  • Sempre inclua o fuso horário - Evite carimbos de data/hora ambíguos
  • Armazenar em UTC - Converter para a hora local apenas para exibição
  • Use Z para UTC - Mais claro que +00:00
  • Validar compensações de fuso horário - Certifique-se de que estejam entre -12h e +14h

Seleção de precisão

PrecisãoCaso de usoExemplo
SegundosEventos de usuário, agendamento1704110400
MilissegundosAplicativos da Web, registro em log geral1704110400000
MicrossegundosMonitoramento de desempenho1704110400000000
NanossegundosNegociação de alta frequência1704110400000000000

Armadilhas Comuns

Evite:

  • Armazenar carimbos de data/hora sem informações de fuso horário
  • Usando a hora local para armazenamento (use sempre UTC)
  • Misturar diferentes níveis de precisão
  • Compensações de fuso horário codificadas
  • Usando números inteiros de 32 bits (problema do ano 2038)

Faça:

  • Sempre inclua designadores de fuso horário (Z ou ±HH:MM)
  • Armazene em UTC, converta para a hora local apenas para exibição
  • Use precisão consistente em todo o seu sistema
  • Use objetos datetime com reconhecimento de fuso horário
  • Use números inteiros de 64 bits para carimbos de data/hora Unix

Ferramentas relacionadas

Guias relacionados