Converte uma string de string de data localizada para epoch

4

Estou tentando converter uma date string em português continental de volta para a hora da época usando bash . Minha localidade padrão é en_US.utf8

Minha string de exemplo é Mai 12 06:58:47 WEST 2015

Eu já tentei fazer:

LC_TIME="pt_PT.utf8" date --date="Mai 12 06:58:47 WEST 2015" +%s    
LC_ALL="pt_PT.utf8" date --date="Mai 12 06:58:47 WEST 2015" +%s

O primeiro comando retorna o erro date: invalid date e o segundo comando retorna o mesmo erro em português.

Eu também tentei com pt_PT , o que não faz sentido, eu acho , já que eu não tenho esse local instalado.

Como posso fazer isso?

    
por Rui F Ribeiro 09.06.2017 / 18:58

2 respostas

2

Infelizmente, com o GNU date , isso não é possível no momento. Das docs :

‘--date=datestr’

Display the date and time specified in datestr instead of the current date and time. datestr can be in almost any common format. It can contain month names, time zones, ‘am’ and ‘pm’, ‘yesterday’, etc. For example, --date="2004-02-27 14:19:13.489392193 +0530" specifies the instant of time that is 489,392,193 nanoseconds after February 27, 2004 at 2:19:13 PM in a time zone that is 5 hours and 30 minutes east of UTC.
Note: input currently must be in locale independent format. E.g., the LC_TIME=C below is needed to print back the correct date in many locales:

date -d "$(LC_TIME=C date)"

(ênfase adicionada)

    
por 09.06.2017 / 19:27
3

O GNU date apenas entende os ingleses,

Você pode tentar o ksh93:

$ LC_ALL=pt_PT.UTF-8 ksh -c 'printf "%(%F)T\n" "Mai 12 06:58:47 WEST 2015"'
2015-05-12

Ou zsh :

zmodload zsh/datetime
strftime -rs t "%b %d %H:%M:%S %Z %Y" "May 12 06:58:47 WEST 2015"
strftime %F $t
    
por 09.06.2017 / 19:38

Tags