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.

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.


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.


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.


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.