Menampilkan tanggal dan waktu saat ini tanpa tanda baca

118

Misalnya, saya ingin menampilkan tanggal dan waktu sekarang sebagai format berikut:

yyyymmddhhmmss 

Bagaimana aku melakukan itu? Tampaknya seperti kebanyakan format tanggal dilengkapi dengan -, /, :, dll

return 0
sumber

Jawaban:

170

Ini dia:

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

Seperti yang man datedikatakan di dekat bagian atas, Anda dapat menggunakan dateperintah seperti ini:

date [OPTION]... [+FORMAT]

Artinya, Anda dapat memberinya parameter format, dimulai dengan a +. Anda mungkin bisa menebak arti simbol format yang saya gunakan:

  • %Y adalah untuk tahun
  • %m adalah untuk bulan
  • %d untuk hari ini
  • ... dan seterusnya

Anda dapat menemukan ini, dan simbol pemformatan lainnya di man date.

janos
sumber
36

Contoh sederhana dalam skrip shell

#!/bin/bash

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

Tanpa format tanda baca: - +% Y% m% d% H% M% S
Dengan tanda baca: - +% Y-% m-% d% H:% M:% S

Buru
sumber
2
"`date +%Y-%m-%d %H:%M:%S`"memberi sayadate: illegal time format
Sinux
6

Jika Anda menggunakan Bash, Anda juga dapat menggunakan salah satu dari perintah berikut:

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

Anda dapat menggunakan Option -v varnameuntuk menyimpan hasil $varnamedaripada mencetaknya ke stdout:

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

Sementara perintah tanggal akan selalu dijalankan dalam subkulit (yaitu dalam proses terpisah) printf adalah perintah bawaan dan oleh karena itu akan lebih cepat.

afaller
sumber
Bagi siapa pun yang mencari dokumentasi lebih lanjut tentang %opsi apa yang dapat Anda berikan, ini tampaknya menggunakan dateperintah. Jadi, man dateakan memberi Anda opsi yang tersedia.
electrovir
4

Tanpa tanda baca (seperti yang disebutkan @Burusothman):

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

O / P:

20170115072120

Dengan tanda baca :

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

O / P:

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

Cara menarik / lucu untuk melakukan ini menggunakan ekspansi parameter (memerlukan bash 4.4atau lebih baru):

${parameter@operator} - P operator

Perluasan adalah string yang merupakan hasil perluasan nilai parameter seolah-olah itu adalah string prompt.

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