O que é o Epoch
O conceito de epoch Unix, também designado tempo Unix, tempo POSIX ou timestamp Unix,
indica o número de segundos decorridos desde 1 de janeiro de 1970 (meia-noite UTC/GMT),
excluindo segundos bissextos (ISO 8601: 1970-01-01T00:00:00Z).
Embora tecnicamente aponte para o tempo Unix 0 (meia-noite de 1/1/1970), o termo "epoch" é comummente utilizado
como sinónimo de tempo Unix.
Eis algumas conversões de intervalos de tempo comuns para segundos e milissegundos.
| Tempo | Segundos (s) | Milissegundos (ms) |
|---|
| 1 hora | 3.600 segundos | 3.600.000 milissegundos |
| 1 dia | 86.400 segundos | 86.400.000 milissegundos |
| 1 semana | 604.800 segundos | 604.800.000 milissegundos |
| 1 ano | 31.556.926 segundos | 31.556.952.000 milissegundos |
Eis alguns exemplos de como obter o epoch atual em várias linguagens de programação e ferramentas.
| Linguagem | Trecho |
|---|
| Javascript | Math.floor(new Date().getTime()/1000) |
| Python | import time; print(int(time.time())) |
| Java | System.out.println(System.currentTimeMillis() / 1000); |
| Go | fmt.Println(time.Now().Unix()) |
| Ruby | puts Time.now.to_i |
| PHP | echo time(); |
| C# | Console.WriteLine((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds); |
| Swift | print(Int(NSDate().timeIntervalSince1970)) |
| Kotlin | println(System.currentTimeMillis() / 1000) |
| Rust | println!("{}", SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()); |
| C | printf("%ld\n", (long)time(NULL)); |
| C++ | std::cout << std::time(0) << std::endl; |
| Perl | print time; |
| Linux/Unix | date +%s |
| Postgres | SELECT extract(epoch from now()); |
| MySQL | SELECT UNIX_TIMESTAMP(); |
| Oracle | SELECT (SYSDATE - TO_DATE('1970-01-01', 'YYYY-MM-DD')) * 86400 FROM DUAL; |
| SQL Server | SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE()); |
- Um guia para principiantes sobre o tempo epoch
- Conversão de tempo epoch