Dalam skrip Bash, saya ingin mencetak datetime saat ini dalam format ISO 8601 (lebih disukai UTC), dan sepertinya ini sesederhana date -I
:
http://ss64.com/bash/date.html
Tapi ini sepertinya tidak berfungsi di Mac saya:
$ date -I
date: illegal option -- I
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
Dan memang, man date
tidak mencantumkan opsi ini.
Adakah yang tahu mengapa ini, atau cara lain (mudah) bagi saya untuk mencetak tanggal dalam format ISO 8601? Terima kasih!
2011-08-27
dan2011-08-27T18:55:43Z
merupakan format ISO 8601. Dan sungguh, mengedit pertanyaan akan lebih bermanfaat untuk melakukan scatting pembaruan di beberapa komentar. Contoh dari apa yang Anda coba cetak akan ideal.brew
(yang menggunakan awalan 'g')gdate -I
berhasil, bersama dengan flag GNU lainnya.Jawaban:
Anda bisa menggunakannya
Atau untuk tanggal yang sepenuhnya sesuai dengan ISO-8601 , gunakan salah satu format berikut:
Keluaran:
atau
Keluaran:
sumber
date -u +"%Y-%m-%dT%H:%MZ"
sebenarnya yang saya cari.Z
dan+00:00
sama (kebanyakan). Untuk keperluan penerjemahan waktu, keduanya berarti UTC. Namun Inggris berada+00:00
di musim dingin dan+01:00
musim panas (BST).Z
UTC, sedangkan+00:00
GMT. UTC bukan zona waktu dan tidak memiliki offset; offset didefinisikan sebagai perbedaan waktu antara zona waktu dan UTC, standar pengukuran waktu. GMT +00: 00 dihapus dari UTC (dan BST, seperti yang Anda katakan, +01: 00 dihapus dari UTC).Dalam GNU tanggal
date -I
sama dengandate +%F
, dan-Iseconds
dan-Iminutes
juga termasuk waktu dengan UTC offset.-u
sepertiTZ=UTC
.+00:00
dapat diganti denganZ
.Ini juga merupakan format tanggal atau waktu ISO 8601 yang valid:
Ini bukan:
sumber
Alternatif singkat yang bekerja pada tanggal GNU dan BSD adalah:
sumber
date -u +%FT%TZ
karena di UTC offset akan menjadi nol pulaPaket coreutils menyediakan alat versi GNU. Untuk memasang:
Anda dapat melihat apa yang disediakan:
Perhatikan itu datang dengan tanggal:
Ini adalah perintah tanggal GNU standar sehingga ia akan beralih -I:
sumber
gdate --iso-8601=ns
2016-09-29T16: 54: 23,485230000 + 02:00Cukup gunakan
date
opsi pemformatan normal :Edit: untuk memasukkan waktu dan UTC, ini setara:
sumber
Ini bukan fitur Bash, ini fitur
date
biner. Di Linux Anda biasanya memiliki versi GNU coreutilsdate
, sedangkan pada OSX Anda akan memiliki utilitas warisan BSD. Versi GNU tentu dapat diinstal sebagai paket opsional, atau Anda dapat melempar pengganti Anda sendiri - saya percaya itu harus sederhana misalnya satu-liner misalnya di Perl.sumber
Mengambil jawaban lain satu langkah lebih jauh, Anda bisa menambahkan fungsi ke ~ / .bashrc atau ~ / .zshrc Anda untuk menambahkan
-I
flag tanggal :sumber
Ada
coreutils
paket yang telah dikompilasi untuk Mac OS X tersedia di:http://rudix.org/packages-abc.html#coreutils .
sumber