Comando de formato de data [fechado]

0

Eu tenho um requisito para anexar o valor do fuso horário no formato abaixo no final de milissegundos, como segue um exemplo:

2018-01-07T14:30:03.832-0700

Por favor, sugira o comando Unix para obter o formato necessário.

    
por Chakkara 01.07.2018 / 10:17

3 respostas

0

É possível obter o formato de horário ISO8601 com a data do GNU:

$ date -Iseconds
2018-07-01T06:57:25-0700

No entanto, para obter o tempo com milissegundos, você precisa especificar a sequência detalhada. Experimente:

$ date +'%Y-%m-%dT%H:%M:%S.%3N%z'
2018-07-01T06:57:28.457-0700
    
por 01.07.2018 / 16:01
2

Com GNU ou ast-open date :

$ date +%FT%T.%3N%z
2018-07-01T13:44:07.043+0100

(GNU date (não GNU strftime ) também suporta %:z para +01:00 , %::z para +01:00:00 ¹ e %:::z para +01 / +01:30 / +01:30:01 ( quantos :xx extra forem necessários)).

Em ksh93 :

$ printf "%(%FT%T.%3N%z)T\n"
2018-07-01T13:44:07.043+0100

Em zsh :

$ zmodload zsh/datetime
$ echo $EPOCHREALTIME | IFS=. read s ns
$ strftime %FT%T.$ns[1,3]%z $s
2018-07-01T13:44:07.043+0100

Portável (a parte difícil são os milissegundos aqui, não o deslocamento de fuso horário que você pode obter com %z em qualquer coisa que envolva a função padrão% strftime() como date ), você pode tentar perl :

perl -MTime::HiRes=gettimeofday -MPOSIX -le '
  ($s, $us) = gettimeofday;
  $ms = sprintf("%03d", $us/1000);
  print strftime "%FT%T.$ms%z", localtime $s'

¹ Sim, é possível ter compensações de TZ com segundos diferentes de zero, como em TZ='OFF00:00:01' date '+%Z %::z' . Para fusos horários da vida real, isso só se aplica a datas distantes (pré-Unix). Veja por exemplo TZ=Europe/Amsterdam date -d '90 years ago' '+%F %::z'

² Observe que enquanto %F e %z são especificados em POSIX strftime() (pelo menos desde SUSv3), eles não estão na especificação POSIX do utilitário date (não sei saber de qualquer sistema atual em que o date não os apóia)

    
por 01.07.2018 / 14:45
1

Adicione %z ao seu formato de hora. Exemplo:

$ date
Sun Jul  1 04:55:02 EDT 2018
$ date '+%z'
-0400
$
    
por 01.07.2018 / 10:56