Mevcut tarih ve saati noktalama işareti olmadan göster


118

Örneğin, şu andaki tarih ve saati aşağıdaki formatta görüntülemek istiyorum:

yyyymmddhhmmss 

Bunu nasıl yaparım? En tarih formatı geliyor gibi olan görünüyor -, /, :vb

Yanıtlar:


170

Hadi bakalım:

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

En man dateüste yakın bir yerde datesöylendiği gibi komutu şu şekilde kullanabilirsiniz :

date [OPTION]... [+FORMAT]

Yani, ona a ile başlayarak bir format parametresi verebilirsiniz +. Muhtemelen kullandığım biçimlendirme sembollerinin anlamını tahmin edebilirsiniz:

  • %Y yıl için
  • %m bir aydır
  • %d gün için
  • ... ve bunun gibi

Bunu ve diğer biçimlendirme sembollerini içinde bulabilirsiniz man date.


36

Kabuk betiğinde basit bir örnek

#!/bin/bash

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

Noktalama biçimi olmadan: - +% Y% m% d% H% M% S
Noktalama işaretiyle: - +% Y-% m-% d% H:% M:% S


2
"`date +%Y-%m-%d %H:%M:%S`"bana birdate: illegal time format
Sinux

6

Bash kullanıyorsanız, aşağıdaki komutlardan birini de kullanabilirsiniz:

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

Sonucu stdout'a yazdırmak yerine içinde -v varnamesaklamak için Option'ı kullanabilirsiniz $varname:

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

Tarih komutu her zaman bir alt kabukta (yani ayrı bir işlemde) çalıştırılırken, printf yerleşik bir komuttur ve bu nedenle daha hızlı olacaktır.


Hangi %seçenekleri iletebileceğinizle ilgili daha fazla belge arayanlar için bu, datekomutu kullanıyor gibi görünüyor . Yani, man datesize mevcut seçenekleri verecektir.
electrovir

4

Noktalama işaretleri olmadan (@Burusothman'ın bahsettiği gibi):

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

O / P:

20170115072120

Noktalama işaretiyle :

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

O / P:

2017-01-15 07:25:33

0

Parametre genişletmeyi kullanarak bunu yapmanın ilginç / eğlenceli yolu (gerektirir bash 4.4veya daha yeni):

${parameter@operator} - P operator

Genişletme, parametre değerinin bir bilgi istemi dizesi gibi genişletilmesinin sonucu olan bir dizedir.

$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.