String de data para epoch no bash

1

Como posso obter a época se eu tiver uma string no seguinte formato?
1/30/2017 11:14:55 AM
O seguinte não funciona:

$ date -j  '1/30/2017 11:14:55 AM' +'%m/%d/%Y %H:%M:%S'  
date: illegal time format
    
por Jim 31.01.2017 / 23:12

1 resposta

3

Basta especificar o formato de entrada com -f :

$ date -jf '%m/%d/%Y %H:%M:%S %p' '1/30/2017 11:14:55 AM' '+%m/%d/%Y %H:%M:%S'
01/30/2017 11:14:55

O que vai depois de + é o formato output . Se você quiser o tempo de época, isso seria +%s .

(note que não há nada bash -específico nesse código. Esse código seria analisado da mesma forma em qualquer shell, mesmo aqueles não-Bourne-like. date não é um comando bash builtin, aqui é O comando date encontrado no sistema de arquivos, especificamente aquele que suporta as extensões -f / -j BSD Em sistemas não-BSD, esse comando provavelmente não funcionará, independentemente de o shell ser bash ou outro. Alguns shells como zsh ou ksh93 possuem recursos de análise de tempo incorporados, mas não bash )

    
por 31.01.2017 / 23:20