SE ağındaki diğer tüm sorular, tarihin now
( Q ) olduğu veya yalnızca bir tarihin belirtildiği ( Q ) senaryolarla ilgilidir .
Ne yapmak istiyorum bir tarih ve saat sağlamak ve daha sonra bundan bir zaman çıkarmak.
İlk önce denediklerim:
date -d "2018-12-10 00:00:00 - 5 hours - 20 minutes - 5 seconds"
Bu sonuç 2018-12-10 06:39:55
- 7 saat ekledi. Sonra 20:05 dakika çıkarıldı.
man
Ve info
sayfasını okuduktan sonra date
, bununla düzelttiğimi düşündüm:
date -d "2018-12-10T00:00:00 - 5 hours - 20 minutes - 5 seconds"
Ama aynı sonuç. 7 saati nereden alıyor?
Diğer günleri de denedim çünkü belki o gün 7200 artık saniye yaşadığımızı düşündüm. Ama aynı sonuçlar.
Birkaç örnek daha:
$ date -d "2018-12-16T00:00:00 - 24 hours" +%Y-%m-%d_%H:%M:%S
2018-12-17_02:00:00
$ date -d "2019-01-19T05:00:00 - 2 hours - 5 minutes" +%Y-%m-%d_%H:%M:%S
2019-01-19_08:55:00
Ama burada ilginç oluyor. Girişteki zamanı atlarsam iyi çalışır:
$ date -d "2018-12-16 - 24 hours" +%Y-%m-%d_%H:%M:%S
2018-12-15_00:00:00
$ date -d "2019-01-19 - 2 hours - 5 minutes" +%Y-%m-%d_%H:%M:%S
2019-01-18_21:55:00
$ date --version
date (GNU coreutils) 8.30
Neyi kaçırıyorum?
Güncelleme:Z
Sonuna bir ekledim ve davranışı değiştirdi:
$ date -d "2019-01-19T05:00:00Z - 2 hours" +%Y-%m-%d_%H:%M:%S
2019-01-19_04:00:00
Yine de kafam karıştı. GNU bilgi sayfasında tarihle ilgili çok fazla bir şey yok .
Bunun bir zaman dilimi konudur tahmin yürütüyorum ama alıntı yapıyorum Takvim Wiki üzerinde ISO 8601 :
Zaman temsili ile UTC ilişkisi bilgisi verilmezse, zamanın yerel saatte olduğu varsayılır.
İstediğim bu. Yerel saatim de doğru ayarlanmış. Bu basit durumda datetime sağlamak ve ondan bir şey çıkarmak isteyen tarihin neden saat dilimiyle uğraşacağından emin değilim. Saatleri önce tarih dizesinden çıkarmamalı mı? Önce bir tarihe dönüştürüp sonra çıkarma yaparsa bile, herhangi bir çıkarma çıkarırsam tam olarak istediğimi alırım:
$ date -d "2019-01-19T05:00:00" +%Y-%m-%d_%H:%M:%S
2019-01-19_05:00:00
Yani EĞER bu gerçekten zaman dilimi konudur, nerede çılgınlık nereden geliyor?