X से दिनों की संख्या गिनने का एक स्मार्ट तरीका क्या है?


11

मैंने 17 नवंबर 2014 से अपनी वर्तमान स्थिति में काम करना शुरू कर दिया है। मैं जानना चाहता हूं कि अब कितने दिन चले हैं। सरल और अच्छा समाधान के साथ आने के लिए लिनक्स का उपयोग करने के बारे में कोई विचार?


मैंने एक पर्ल स्क्रिप्ट में कुछ ऐसा ही किया; मैंने दी गई तारीख (उदाहरण के लिए 17 नवंबर, 2014) से सेकंड की संख्या प्राप्त करने के लिए टाइमेलोकल () फ़ंक्शन का उपयोग किया, फिर घटाया कि वर्तमान युग-तारीख-इन-सेकंड से, फिर 86400 (सेकंड से विभाजित) एक दिन)। मुझे यकीन है कि कोई एक खोल-केवल समाधान के साथ :) माध्यम से आ जाएगा हूँ
जेफ स्कालर

2
समय अंकगणित में बहुत सारे विशेष रूप से विशेष मामले हैं। जबकि UNIX टाइमस्टैम्प को घटाना और 86,400 से विभाजित करने जैसी सरल चीजें आपको लगभग अनुमानित उत्तर देंगी, आप एक विशेष समय पुस्तकालय का उपयोग करने से बेहतर हैं जो विशेष मामलों को ध्यान में रखते हैं, उदाहरण के लिए पायथन का dateutil
रीड

1
जल्दी से गणना की तारीख के अंतर में से कुछ जवाब यहां भी मदद कर सकते हैं।
मैनटवर्क


@ msh210 आपको जीवन के लिए प्रतिबंधित कर दिया गया है और प्राचीन COBOL कोड के लिए कोड क्लीनर के रूप में समुदाय की सेवा करते हुए 1 महीने के लिए जेल की सजा सुनाई गई है।
याचौच

जवाबों:


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

4
यह लीप सेकंड गलत हो जाता है। मेरा मतलब है, कि शायद ही अब मायने रखता है , लेकिन 10k वर्षों में या संचित त्रुटि बात करने के लिए पर्याप्त हो सकता है।
केविन

2
प्रायिकता लीप सेकंड .000001% में त्रुटि को ट्रिगर करेगा। यह उन दिनों की गलत संख्या की तुलना में नगण्य है जहां यह विधि उन स्थानों के साथ देगी जहां दिन के समय की बचत होती है: 2% मामले ...
jlliagre

2
@Kevin: वह पता करने के लिए कितने दिन वह कहीं न कहीं काम किया चाहता है, तो हम (cryogenisation या चिकित्सा के क्षेत्र में आगे बढ़ने जब तक) बहुत ज्यादा परेशान नहीं कर सकते हैं इस ^^ के बारे में
ओलिवर Dulac

1
@ जल्लीगर:% s यूनिक्स समय है, जो हमेशा यूटीसी होता है, जिसमें डीएसटी की कमी होती है।
केविन

1
संभावना है कि वह काम पर अपने डेस्क के पीछे बेकार करते हुए नियोजित दिनों की संख्या के बारे में सोच रहा होगा। जैसा कि शायद आधी रात के आसपास नहीं है, लेकिन सुबह 8 बजे से शाम 5 बजे के बीच (और date -d 2014/11/17आधी रात का टाइमस्टैम्प देता है क्योंकि कोई समय का उल्लेख नहीं है) डीएसटी कोई फर्क नहीं पड़ता।
wurtel

5

खैर, इसके चेहरे पर:

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

एक स्क्रिप्ट में (बहुत कुशल नहीं, लेकिन ... शायद यह छलांग सेकंड संभालती है?))

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"

यहां तक agoकि समझा जाता है:date --date="239 days ago"
डिजिटल ट्रामा

1
@DigitalTrauma बहुत खराब है, यह स्थानीयकृत नहीं है। जैसे LC_ALL=ru_RU.utf8 date --date="239 дней назад"मुझे वही परिणाम मिलता है date --date="239"
रुस्लान

@Ruslan वास्तव में :)
डिजिटल ट्रॉमा

1

मैंने कमांड लाइन पर अजगर की कोशिश की।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.