Saya memerlukan perintah shell atau skrip yang mengubah cap waktu Unix menjadi tanggal. Input dapat berasal dari parameter pertama atau dari stdin, memungkinkan untuk pola penggunaan berikut:
ts2date 1267619929
dan
echo 1267619929 | ts2date
Kedua perintah harus menampilkan "Rab 3 Mar 13:38:49 2010".
bash
date
unix-timestamp
Chiborg
sumber
sumber
date -d @$(date -u +%s)
@
? Saya tidak melihat itu di halaman manual GNU sama sekali.brew install coreutils; gdate -d @1267619929
info 'Date input formats'
membuat Anda langsung kedate
simpul info pemformatan, dengan kutipan Robert Grudin yang bersangkutan, dan kemudian menu penentu format.bekerja untuk saya di Mac OS X.
sumber
Versi ini mirip dengan jawaban chiborg , tetapi menghilangkan kebutuhan untuk eksternal
tty
dancat
. Itu menggunakandate
, tetapi bisa dengan mudah digunakangawk
. Anda dapat mengubah shebang dan mengganti tanda kurung ganda dengan yang tunggal dan ini juga akan berjalansh
.sumber
gawk
(kira-kira) 15% lebih cepat daridate
padafor
loop berjangka waktu yang hanya terdiri darigawk 'BEGIN { print strftime("%c", 1256571985); }'
ataudate -d '@1256571985' +%c
dengan output diarahkan ke/dev/null
.Anda dapat menggunakan tanggal GNU, misalnya,
atau
sumber
Anda dapat menggunakan skrip awk sederhana ini:
Penggunaan sampel:
sumber
date -s @
tidak berfungsi, danawk
masih berfungsi ! Contoh tanpa stdin akan sangat membantu juga.Sejak Bash 4.2 Anda dapat menggunakan
printf
's%(datefmt)T
Format:Itu bagus, karena itu adalah shell builtin. Format untuk datefmt adalah string yang diterima oleh
strftime(3)
(lihatman 3 strftime
). Ini%c
adalah:Sekarang jika Anda ingin skrip yang menerima argumen dan, jika tidak ada yang disediakan, bertuliskan stdin, Anda dapat melanjutkan sebagai:
sumber
Saya menggunakan ini saat mengonversi file log atau memonitornya:
sumber
awk '{ printf strftime("%c: ", $1); $1 = ""; print $0; }'
Di OSX, atau BSD, ada
-r
flag setara yang tampaknya mengambil cap waktu unix. Berikut adalah contoh yang menjalankan tanggal empat kali: sekali untuk kencan pertama, untuk menunjukkan apa itu; satu untuk konversi ke unix timestamp dengan%s
, dan akhirnya, satu yang, dengan-r
, mengubah apa yang%s
menyediakan kembali ke string.Setidaknya, sepertinya bekerja di mesin saya.
sumber
Anda bisa mendapatkan tanggal yang diformat dari cap waktu seperti ini
sumber
Saya telah menulis skrip yang melakukan ini sendiri:
sumber
Dalam jawaban ini saya menyalin jawaban Dennis Williamson dan memodifikasinya sedikit untuk memungkinkan peningkatan kecepatan yang besar ketika memipis kolom banyak cap waktu ke skrip. Misalnya, mem-pipkan 1000 cap waktu ke skrip asli dengan xargs -n1 di komputer saya menggunakan 6.929s dibandingkan dengan 0.027s dengan versi modifikasi ini:
sumber
beberapa contoh:
sumber
Saya menggunakan cross-platform one-liner ini:
Ini harus bekerja di kedua macOS dan versi yang lebih baru dari distribusi Linux umum.
sumber
Meskipun bukan bash murni, skrip berikut akan mengonversi stempel waktu dengan panjang 13 dalam string ke tanggal yang setara di zona waktu lokal Anda menggunakan perl
timestamp_to_date.sh
memasukkan
keluaran
sumber
Dalam PHP
sumber