Aktuelles Datum und Uhrzeit ohne Interpunktion anzeigen

118

Zum Beispiel möchte ich das aktuelle Datum und die aktuelle Uhrzeit im folgenden Format anzeigen:

yyyymmddhhmmss 

Wie mache ich das? Es scheint , wie die meisten Datumsformate mit kommen -, /, :etc.

0 zurückgeben
quelle

Antworten:

170

Bitte schön:

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

Wie man dateoben erwähnt, können Sie den folgenden dateBefehl verwenden:

date [OPTION]... [+FORMAT]

Das heißt, Sie können ihm einen Formatparameter geben, beginnend mit a +. Sie können wahrscheinlich die Bedeutung der von mir verwendeten Formatierungssymbole erraten:

  • %Y ist für das Jahr
  • %m ist für Monat
  • %d ist für den Tag
  • ... und so weiter

Sie finden dieses und andere Formatierungssymbole in man date.

Janos
quelle
36

Ein einfaches Beispiel in Shell-Skript

#!/bin/bash

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

Ohne Interpunktionsformat: - +% Y% m% d% H% M% S
Mit Interpunktion: - +% Y-% m-% d% H:% M:% S.

Buru
quelle
2
"`date +%Y-%m-%d %H:%M:%S`"gibt mir einedate: illegal time format
Sinux
6

Wenn Sie Bash verwenden, können Sie auch einen der folgenden Befehle verwenden:

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

Sie können die Option verwenden -v varname, um das Ergebnis zu speichern, $varnameanstatt es auf stdout zu drucken:

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

Während der Datumsbefehl immer in einer Subshell (dh in einem separaten Prozess) ausgeführt wird, ist printf ein integrierter Befehl und daher schneller.

afaller
quelle
Für alle, die weitere Dokumentation darüber suchen, welche %Optionen Sie übergeben können, scheint dies der dateBefehl zu sein. So erhalten man dateSie die verfügbaren Optionen.
Electrovir
4

Ohne Interpunktion (wie @Burusothman erwähnt hat):

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

O / P:

20170115072120

Mit Interpunktion :

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

O / P:

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

Interessante / lustige Möglichkeit, dies mithilfe der Parametererweiterung zu tun (erforderlich bash 4.4oder neuer):

${parameter@operator} - P operator

Die Erweiterung ist eine Zeichenfolge, die das Ergebnis der Erweiterung des Parameterwerts ist, als wäre es eine Eingabeaufforderungszeichenfolge.

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