X'ten bu yana geçen gün sayısını saymanın akıllı yolu nedir?


11

17 Kasım 2014'ten beri şu anki pozisyonumda çalışmaya başladım. Şimdiye kadar kaç gün geçtiğini bilmek istiyorum. Basit ve güzel bir çözüm bulmak için Linux'u nasıl kullanacağınız hakkında bir fikriniz var mı?


Perl betiğinde benzer bir şey yaptım; Dönemden belirli bir tarihe kadar (örneğin, 17 Kasım 2014) saniye sayısını almak için timelocal () işlevini kullandım, ardından saniyedeki geçerli dönemden tarihi çıkarıp 86400'e (saniye cinsinden) bir gün). Eminim birisi sadece kabuklu bir çözümle gelecektir :)
Jeff Schaller

2
Zaman aritmetiğinin birçok özel vakası vardır. UNIX zaman damgalarını çıkarmak ve 86.400'e bölmek gibi basit şeyler size yaklaşık bir cevap verirken, özel durumları, örneğin Python'ları dikkate alan özel bir zaman kitaplığı kullanmaktan daha iyidir dateutil.
Reid

1
Tarih farklılıklarını hızlı bir şekilde hesaplamak için verilen cevaplardan bazıları burada da yardımcı olabilir.
manatwork


@ msh210 ömür boyu yasaklandınız ve topluluğa antik COBOL kodu için kod temizleyici olarak hizmet ederken 1 ay hapis cezasına çarptırıldınız.
ychaouche

Yanıtlar:


14
echo $(( (`date +%s` - `date +%s -d '2014/11/17'`) / 86400 )) days ago

4
Bu artık saniye yanlış oluyor. Demek istediğim, bu artık önemli değil, ama 10k yıl içinde biriken hatanın önemi yeterli olabilir.
Kevin

2
Olasılık sıçrama saniye değeri yaklaşık% .000001 oranında bir hata tetikler. Bu yöntem, gün ışığından yararlanma saatinin gözlemlendiği
yerlilerle

2
@Kevin: Bir yerde kaç gün çalıştığını bilmek istiyorsa, (kriyojenizasyon veya tıpta daha fazla ilerleyene kadar) bu konuda çok fazla rahatsız etmeyiz ^^
Olivier Dulac

1
@jlliagre:% s, DST içermeyen her zaman UTC olan Unix zamanıdır.
Kevin

1
Şansı, işyerinde masasının arkasında rölantide çalışırken kaç gün çalıştığını merak edecektir. Muhtemelen gece yarısı civarında değil ama 08:00 ile 17:00 arasında bir yerde (ve date -d 2014/11/17hiçbir zaman belirtildiği gibi gece yarısı bir zaman damgası verir) DST önemli değil.
wurtel

5

Yüzünde:

$ date --date="-239 days"
Mon Nov 17 15:25:40 CET 2014

Bir senaryoda (çok verimli değil, ama ... belki artık saniye işliyor?;))

i=0
result=""
while [ "$result" != "20141117" ]
do
    i=$((i+1))
    result=$(date --date="-$i days" +%Y%m%d)
done
echo "$i" days have passed since "$result"

Hatta agoanlaşılıyor:date --date="239 days ago"
Dijital Travma

1
@DigitalTrauma çok kötü lokalize değil. Örneğin LC_ALL=ru_RU.utf8 date --date="239 дней назад"bana aynı sonucu veriyor date --date="239".
Ruslan

@Ruslan indeed :)
Digital Trauma

1

Komut satırında python denedim.

$ python -c "import datetime; print datetime.date.today() - datetime.date(2014,11,17)"
246 days, 0:00:00 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.