Bagaimana saya mendapatkan tanggal akhir bulan sebelumnya, berdasarkan tanggal pemrosesan?
Contoh:
- Tanggal pemrosesan = 15jan2015
- Tanggal yang diharapkan = 31dec2014,
- Tanggal pemrosesan = 10feb2015
- Tanggal yang diharapkan = 31jan2015
shell-script
pengguna128856
sumber
sumber
TZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '1 day ago'
. Anda mendapatkan kesalahan karena tidak ada 2011-12-30 di sana. Artinya, hari offset dilakukan pada waktu kalender. 2011-12-31 dikurangi 31 hari memberi Anda 2011-11-30 karena mengambil 31 dari 31. Tidak mengambil 31 * 24 * 60 * 60 * 60 detik dari waktu saat ini. Bandingkan denganTZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '24 hour ago'
yang memberi Anda tanggal 29, yaitu, kali ini, tanggal 24 * 60 * 60 * 60 detik yang lalu.Berikut adalah versi yang berfungsi di Mac OS, yang menggunakan
date
utilitas BSD :date -v1d -v-1d +%d%b%Y
Argumen diterapkan secara berurutan. Anda dapat membayangkan bahwa suatu kencan disalurkan dari satu argumen ke argumen berikutnya. Sebagai contoh:
date
) -> 2017-03-06-v1d
) -> 2017-03-01-v-1d)
-> 2017-02-28+%d%b%Y
) -> 28Feb2017Anda dapat mencapai jumlah bulan maju atau mundur menggunakan
date -v-1m -v1d -v-1d
, menggantikan-1m
dengan jumlah bulan mundur atau maju (+1m
) yang Anda inginkan.Itulah jawaban umum. Pertanyaan ini secara khusus menanyakan tentang tanggal relatif terhadap tanggal mulai. Utilitas tanggal Mac OS / BSD tidak memungkinkan Anda menyediakan datestamp untuk memulai, tetapi Anda dapat mengatur setiap elemen tanggal secara individual:
date -v2015y -v1m -v15d -v1d -v-1d +%d%b%Y
-> 31Dec2014sumber
Coba gunakan kode ini
sumber