Exibir data e hora atuais sem pontuação

118

Por exemplo, desejo exibir a data e hora atuais no seguinte formato:

yyyymmddhhmmss 

Como faço isso? Parece que a maioria formato de data vem com -, /, :, etc.

retornar 0
fonte

Respostas:

170

Aqui está:

date +%Y%m%d%H%M%S

Como man datediz perto do topo, você pode usar o datecomando assim:

date [OPTION]... [+FORMAT]

Ou seja, você pode dar a ele um parâmetro de formato, começando com a +. Você provavelmente pode adivinhar o significado dos símbolos de formatação que usei:

  • %Y é para o ano
  • %m é por mês
  • %d é por dia
  • ... e assim por diante

Você pode encontrar este e outros símbolos de formatação em man date.

janos
fonte
36

Um exemplo simples em script de shell

#!/bin/bash

current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

Sem formato de pontuação: - +% Y% m% d% H% M% S
Com pontuação: - +% Y-% m-% d% H:% M:% S

Buru
fonte
2
"`date +%Y-%m-%d %H:%M:%S`"dá-me umdate: illegal time format
Sinux
6

Se você estiver usando o Bash, também poderá usar um dos seguintes comandos:

printf '%(%Y%m%d%H%M%S)T'       # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1    # same as above
printf '%(%Y%m%d%H%M%S)T' -2    # prints the time the shell was invoked

Você pode usar a opção -v varnamepara armazenar o resultado em $varnamevez de imprimi-lo no stdout:

printf -v varname '%(%Y%m%d%H%M%S)T'

Embora o comando de data seja sempre executado em um subshell (isto é, em um processo separado), printf é um comando interno e, portanto, será mais rápido.

afaller
fonte
Para quem procura mais documentação sobre quais %opções você pode passar, isso parece estar usando o datecomando. Assim, man dateapresentará as opções disponíveis.
electrovir
4

Sem pontuação (como @Burusothman mencionou):

current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

O / P:

20170115072120

Com pontuação :

current_date_time="`date "+%Y-%m-%d %H:%M:%S"`";
echo $current_date_time;

O / P:

2017-01-15 07:25:33
Ani Menon
fonte
0

Maneira interessante / engraçada de fazer isso usando a expansão de parâmetros (requer bash 4.4ou mais recente):

${parameter@operator} - P operator

A expansão é uma string que resulta da expansão do valor do parâmetro como se fosse uma string de prompt.

$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
PesaThe
fonte