Recursos de timestamp

Comparação de carimbo de data/hora de linguagem de programação

Comparação de carimbo de data/hora de linguagem de programação

Referência rápida para operações de carimbo de data/hora em linguagens de programação populares.

Carimbo de data/hora atual

IdiomaSegundosMilissegundosMicrossegundos
JavaScriptMath.floor(Data.now() / 1000)Data.agora()desempenho.now()
Pítonint(tempo.tempo())int(tempo.time() * 1000)time.time_ns() // 1000
JavaSystem.currentTimeMillis()/1000System.currentTimeMillis()Instant.now().getEpochSecond()
time.Now().Unix()time.Now().UnixMilli()time.Now().UnixMicro()
PHPtempo()microtempo(verdadeiro) * 1000microtempo(verdadeiro) * 1000000
RubiHora.agora.to_iHora.agora.to_f * 1000Hora.agora.to_r
C#DateTimeOffset.UtcNow.ToUnixTimeSeconds()DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()-
RápidoData().timeIntervalSince1970Int(Data().timeIntervalSince1970 * 1000)-

Carimbo de data/hora até a data

IdiomaCódigo
JavaScriptnova data(timestamp * 1000)
Pítondatetime.fromtimestamp(timestamp)
JavaInstant.ofEpochSecond(timestamp)
tempo.Unix(timestamp, 0)
PHPdata('Ymd H:i:s', $timestamp)
RubiHora.at(carimbo de data/hora)
C#DateTimeOffset.FromUnixTimeSeconds(timestamp)
RápidoData(timeIntervalDesde 1970: TimeInterval(timestamp))

Data para carimbo de data/hora

IdiomaCódigo
JavaScriptMath.floor(date.getTime() / 1000)
Pítonint(data.timestamp())
Javadate.toEpochSecond(ZoneOffset.UTC)
data.Unix()
PHPstrtotime('2024-01-01')
Rubidata.para_i
C#((DateTimeOffset)data).ToUnixTimeSeconds()
RápidoInt(date.timeIntervalSince1970)

Formatação

IdiomaCódigo
JavaScriptdate.toISOString() ou date.toLocaleString()
Pítondate.strftime('%Y-%m-%d %H:%M:%S')
JavaDateTimeFormatter.ISO_DATE_TIME.format(data)
data.Format(hora.RFC3339)
PHPdata('Ymd H:i:s', $timestamp)
Rubidate.strftime('%Y-%m-%d %H:%M:%S')
C#date.ToString("aaaa-MM-dd HH:mm:ss")
RápidodateFormatter.dateFormat = "aaaa-MM-dd HH:mm:ss"

Tratamento de fuso horário

IdiomaUTCLocaisConverter
JavaScriptnova Data().toISOString()nova Data().toLocaleString()date.toLocaleString('en-US', {timeZone: 'UTC'})
Pítondatetime.utcnow()datetime.now()date.astimezone(timezone('UTC'))
JavaInstant.now()LocalDateTime.now()date.atZone(ZoneId.of("UTC"))
hora.Agora().UTC()tempo.Agora()data.In(hora.UTC)
PHPgmdata()data()date_default_timezone_set('UTC')
RubiHora.now.utcHora.agoraTime.now.getutc
C#DateTime.UtcNowDateTime.AgoraTimeZoneInfo.ConvertTimeToUtc(data)
RápidoDate() (sempre UTC internamente)Data()Calendar.current.dateComponents

Início da Época

  • Todos os idiomas usam época Unix: 1º de janeiro de 1970 00:00:00 UTC
  • Exceção: horário GPS usa 6 de janeiro de 1980
  • TAI usa 1º de janeiro de 1958

Precisão

  • Segundos: Mais comum, 10 dígitos (até 2286)
  • Milisegundos: 13 dígitos, padrão JavaScript
  • Microssegundos: 16 dígitos
  • Nanossegundos: 19 dígitos, alguns sistemas

Armazenamento de fuso horário

  • JavaScript: Sem fuso horário no objeto Date, usa o fuso horário do navegador
  • Python: objetos de data e hora ingênuos versus conscientes
  • Java: Instantâneo (UTC) vs ZonedDateTime (com zona)
  • Go: Local anexado ao objeto Time
  • Ruby: objeto de tempo inclui deslocamento de fuso horário
  • C#: DateTimeKind (não especificado, Utc, Local)
  • Swift: a data é sempre UTC, o calendário lida com zonas

Melhores práticas

  1. Sempre armazene UTC em bancos de dados
  2. Converter para horário local apenas para exibição
  3. Use ISO 8601 para serialização de API
  4. Trate dos segundos bissextos com cuidado (GPS/TAI vs UTC)
  5. Considere a precisão necessária para seu caso de uso

Recursos relacionados