Recursos de marcas de tiempo
Comparación de Timestamp por Lenguaje de Programación
Comparación de Timestamp por Lenguaje de Programación
Referencia rápida para operaciones de timestamp en lenguajes de programación populares.
Timestamp Actual
| Lenguaje | Segundos | Milisegundos | Microsegundos |
|---|---|---|---|
| JavaScript | Math.floor(Date.now() / 1000) | Date.now() | performance.now() |
| Python | int(time.time()) | int(time.time() * 1000) | time.time_ns() // 1000 |
| Java | System.currentTimeMillis() / 1000 | System.currentTimeMillis() | Instant.now().getEpochSecond() |
| Go | time.Now().Unix() | time.Now().UnixMilli() | time.Now().UnixMicro() |
| PHP | time() | microtime(true) * 1000 | microtime(true) * 1000000 |
| Ruby | Time.now.to_i | Time.now.to_f * 1000 | Time.now.to_r |
| C# | DateTimeOffset.UtcNow.ToUnixTimeSeconds() | DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() | - |
| Swift | Date().timeIntervalSince1970 | Int(Date().timeIntervalSince1970 * 1000) | - |
Timestamp a Fecha
| Lenguaje | Código |
|---|---|
| JavaScript | new Date(timestamp * 1000) |
| Python | datetime.fromtimestamp(timestamp) |
| Java | Instant.ofEpochSecond(timestamp) |
| Go | time.Unix(timestamp, 0) |
| PHP | date('Y-m-d H:i:s', $timestamp) |
| Ruby | Time.at(timestamp) |
| C# | DateTimeOffset.FromUnixTimeSeconds(timestamp) |
| Swift | Date(timeIntervalSince1970: TimeInterval(timestamp)) |
Fecha a Timestamp
| Lenguaje | Código |
|---|---|
| JavaScript | Math.floor(date.getTime() / 1000) |
| Python | int(date.timestamp()) |
| Java | date.toEpochSecond(ZoneOffset.UTC) |
| Go | date.Unix() |
| PHP | strtotime('2024-01-01') |
| Ruby | date.to_i |
| C# | ((DateTimeOffset)date).ToUnixTimeSeconds() |
| Swift | Int(date.timeIntervalSince1970) |
Formateo
| Lenguaje | Código |
|---|---|
| JavaScript | date.toISOString() o date.toLocaleString() |
| Python | date.strftime('%Y-%m-%d %H:%M:%S') |
| Java | DateTimeFormatter.ISO_DATE_TIME.format(date) |
| Go | date.Format(time.RFC3339) |
| PHP | date('Y-m-d H:i:s', $timestamp) |
| Ruby | date.strftime('%Y-%m-%d %H:%M:%S') |
| C# | date.ToString("yyyy-MM-dd HH:mm:ss") |
| Swift | dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" |
Manejo de Zonas Horarias
| Lenguaje | UTC | Local | Convertir |
|---|---|---|---|
| JavaScript | new Date().toISOString() | new Date().toLocaleString() | date.toLocaleString('en-US', {timeZone: 'UTC'}) |
| Python | datetime.utcnow() | datetime.now() | date.astimezone(timezone('UTC')) |
| Java | Instant.now() | LocalDateTime.now() | date.atZone(ZoneId.of("UTC")) |
| Go | time.Now().UTC() | time.Now() | date.In(time.UTC) |
| PHP | gmdate() | date() | date_default_timezone_set('UTC') |
| Ruby | Time.now.utc | Time.now | Time.now.getutc |
| C# | DateTime.UtcNow | DateTime.Now | TimeZoneInfo.ConvertTimeToUtc(date) |
| Swift | Date() (siempre UTC internamente) | Date() | Calendar.current.dateComponents |
Diferencias Clave
Inicio de la Época
- Todos los lenguajes usan época Unix: 1 de enero de 1970 00:00:00 UTC
- Excepción: tiempo GPS usa 6 de enero de 1980
- TAI usa 1 de enero de 1958
Precisión
- Segundos: Más común, 10 dígitos (hasta 2286)
- Milisegundos: 13 dígitos, predeterminado en JavaScript
- Microsegundos: 16 dígitos
- Nanosegundos: 19 dígitos, algunos sistemas
Almacenamiento de Zona Horaria
- JavaScript: Sin zona horaria en objeto Date, usa zona del navegador
- Python: Objetos datetime Naive vs Aware
- Java: Instant (UTC) vs ZonedDateTime (con zona)
- Go: Location adjunta a objeto Time
- Ruby: Objeto Time incluye offset de zona horaria
- C#: DateTimeKind (Unspecified, Utc, Local)
- Swift: Date siempre es UTC, Calendar maneja zonas
Mejores Prácticas
- Siempre almacene UTC en bases de datos
- Convierta a hora local solo para visualización
- Use ISO 8601 para serialización de API
- Maneje segundos intercalares con cuidado (GPS/TAI vs UTC)
- Considere la precisión necesaria para su caso de uso