A sequência de data e hora está no seguinte formato: 06/12/2012 07:21:22. Como posso convertê-lo em carimbo de data / hora ou época UNIX?
92
O que você está procurando é date --date='06/12/2012 07:21:22' +"%s"
. Tenha em mente que isso assume que você está usando GNU coreutils, já que ambos --date
e a %s
string de formato são extensões GNU. POSIX não especifica nenhum desses, portanto, não há maneira portátil de fazer essa conversão, mesmo em sistemas compatíveis com POSIX.
Consulte a página de manual apropriada para outras versões do date
.
Nota: bash --date
e -d
option esperam a data no formato US ou ISO8601, mm/dd/yyyy
ou seja yyyy-mm-dd
, não no Reino Unido, UE ou qualquer outro formato.
+"%s"
significa formato de saída e%s
é o formato de tempo em segundos desde 1970date --date='06/12/2012 07:21:22 -0000' +"%s"
converte a data UTC em carimbo de hora unixyyyy-mm-dd hh:mm:ss
dê uma olhada em gnu.org/software/coreutils/manual/html_node/… :gdate --date='2019-06-18 00:02:00 +0000' +%s
Para Linux, execute este comando
Para mac OSX execute este comando
fonte
-u
sinalizador deve corrigir isso.-u
sinalizador deve vir antes do-f
sinalizador, ou então o shell o interpretará como a string de formato. Portanto, deve ser:date -j -u -f "%a..."
date -jf "%Y-%m-%d %H:%M:%S" "2018-01-08 14:45:00" +%s
Muitas dessas respostas são excessivamente complicadas e também não sabem como usar variáveis. É assim que você faria isso de forma mais simples no sistema Linux padrão (como mencionado anteriormente, o comando de data teria que ser ajustado para usuários de Mac):
Script de amostra:
Resulta em :
Ou como uma função:
fonte
fonte
Solução eficiente usando
date
como processo dedicado em segundo planoPara tornar esse tipo de tradução muito mais rápido ...
Introdução
Nesta postagem, você encontrará
bc
,rot13
,sed
...).Demonstração Rápida
Isso deve gerar UNIXTIME atual . A partir daí, você pode comparar
e:
De mais de 6 segundos a menos de meio segundo !! (no meu host).
Você pode verificar
echo $ans
, substitua"now"
por"2019-25-12 20:10:00"
e assim por diante ...Opcionalmente, você poderia, uma vez que o requisito do subprocesso de data terminou:
Postagem original (explicação detalhada)
Em vez de executar 1 bifurcação por data para converter, execute
date
apenas 1 vez e faça todas as conversões com o mesmo processo (isso pode se tornar muito mais rápido) !:Amostra:
Então agora dê uma olhada:
Isso foi feito em uma execução!
Usando subprocesso de longa duração
Só precisamos de um fifo :
(Observação: como o processo está em execução e todos os descritores são abertos, podemos remover com segurança a entrada do sistema de arquivos fifo.)
Então agora:
Poderíamos construir uma pequena função:
Ou use minha
newConnector
funçãoCom funções para conectar
MySQL/MariaDB
,PostgreSQL
eSQLite
...Você pode encontrá-los em versões diferentes no GitHub ou no meu site: download ou show .
Nota: No GitHub , funções e teste são arquivos separados. No meu site, os testes são executados simplesmente se este script não for originado .
fonte
Apenas certifique-se de qual fuso horário você deseja usar.
O uso mais popular leva o fuso horário da máquina.
Mas no caso de você querer passar a data e hora UTC intencionalmente e quiser um fuso horário adequado, você precisa adicionar um
-u
sinalizador. Caso contrário, você o converte de seu fuso horário local.fonte
date
formata adequadamente esta entrada.