Wyświetla aktualną datę i godzinę bez znaków interpunkcyjnych

118

Na przykład chcę wyświetlić bieżącą datę i godzinę w następującym formacie:

yyyymmddhhmmss 

W jaki sposób mogę to zrobić? Wydaje się, że data najbardziej Format pochodzi z -, /, :, itd.

powrót 0
źródło

Odpowiedzi:

170

Proszę bardzo:

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

Jak man datemówi u góry, możesz użyć następującego datepolecenia:

date [OPTION]... [+FORMAT]

Oznacza to, że możesz nadać mu parametr formatu, zaczynając od +. Prawdopodobnie możesz odgadnąć znaczenie symboli formatowania, których użyłem:

  • %Y jest na rok
  • %m jest na miesiąc
  • %d jest na dzień
  • ... i tak dalej

Możesz znaleźć to i inne symbole formatowania w man date.

janos
źródło
36

Prosty przykład w skrypcie powłoki

#!/bin/bash

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

Bez formatu interpunkcji: - +% Y% m% d% H% M% S
Z interpunkcją: - +% Y-% m-% d% H:% M:% S

Buru
źródło
2
"`date +%Y-%m-%d %H:%M:%S`"daje midate: illegal time format
Sinux
6

Jeśli używasz Bash, możesz również użyć jednego z następujących poleceń:

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

Możesz użyć opcji, -v varnameaby zapisać wynik $varnamezamiast drukowania go na stdout:

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

Chociaż polecenie date zawsze będzie wykonywane w podpowłoce (tj. W oddzielnym procesie), printf jest poleceniem wbudowanym i dlatego będzie szybsze.

afaller
źródło
Dla każdego, kto szuka dalszej dokumentacji na temat %opcji, które możesz przekazać, wydaje się, że używa tego datepolecenia. Więc man dateda ci dostępne opcje.
electrovir
4

Bez interpunkcji (jak wspomniał @Burusothman):

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

O / P:

20170115072120

Z interpunkcją :

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

O / P:

2017-01-15 07:25:33
Ani Menon
źródło
0

Ciekawy / zabawny sposób na zrobienie tego za pomocą rozszerzenia parametrów (wymaga bash 4.4lub nowszy):

${parameter@operator} - P operator

Interpretacja to łańcuch będący wynikiem rozszerzenia wartości parametru tak, jakby był to wiersz zachęty.

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