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