2009-07-07 19 views
47

ईस्टर में वर्तमान दिनांक मूल्य कैसे प्राप्त करें, 1 9 70-1-1 के बाद से बीत चुके दिनों की संख्या। मुझे यूनिक्स शैल स्क्रिप्ट में समाधान की आवश्यकता है।यूनिक्स शेल स्क्रिप्ट से युग में वर्तमान दिनांक प्राप्त करें

+0

द्वारा विभाजित यह टी पर निर्भर करता है वह भाषा आप किस भाषा का उपयोग करते हैं? – Stephan202

+0

आप किस भाषा या तकनीक का उपयोग कर रहे हैं? –

+0

मैं यूनिक्स का उपयोग कर रहा हूं। मुझे इसे खोल स्क्रिप्ट के अंदर उपयोग करने की ज़रूरत है ... –

उत्तर

24

अद्यतन: इस सवाल का जवाब पहले से यहां पोस्ट अब उपलब्ध नहीं है कि पूरी तरह से क्योंकि ओपी संकेत दिया कि date +'%s' उसके लिए काम नहीं किया एक कस्टम स्क्रिप्ट से जुड़ा हुआ। उचित समाधान के लिए UberAlex' answer और cadrian's answer देखें। संक्षेप में:

  1. सेकंड की संख्या यूनिक्स काल उपयोग date(1) के रूप में के बाद से के लिए इस प्रकार है:

    date +'%s' 
    
  2. दिनों की संख्या यूनिक्स अवधि के बाद के लिए द्वारा परिणाम विभाजित एक दिन में सेकंड की संख्या (दिमाग डबल ब्रांड्स!):

    echo $(($(date +%s)/60/60/24)) 
    
+0

यह काम करता है ... बहुत बहुत धन्यवाद। –

+0

आपका स्वागत है :) – Stephan202

+0

FYI: ** लिंक टूटा हुआ है ** – Soren

-4

भाषा आप इसे प्रयोग कर रहे हैं पर निर्भर करता है

CInt(CDate("1970-1-1") - CDate(Today())) 

की तरह कुछ सरल विडंबना यह है कि पर्याप्त होना करने के लिए जा रहा है, कल 40,000 दिन यदि आप कई कंप्यूटर सिस्टम की तरह के रूप में "शून्य दिन" 1900/01/01 का उपयोग किया गया उपयोग।

+0

ऐसा लगता है मेरे लिए वीबी। प्रश्न यूनिक्स शैल स्क्रिप्ट के संबंध में पूछता है। – Noldorin

+0

उसने उत्तर देने के बाद इसे संपादित किया। वैसे भी आपके इनपुट के लिए धन्यवाद। – mandroid

+2

यह विडंबना क्यों है? – jameshfisher

10
echo $(($(date +%s)/60/60/24)) 
+0

+1 अधिकांश बोर्न शैल और यूनिक्स पर काम करना चाहिए – nos

+2

ध्यान दें कि '% s' एक एक्सटेंशन है।POSIX दिनांक में '% s' नहीं है। विवरण के लिए http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html देखें। – Jens

+1

सभी दिनों में 86400 (60 * 60 * 24) सेकंड (डीएसटी, लीप सेकंड, आदि ...) –

127

यूनिक्स तिथि आदेश युग समय में प्रदर्शित करेगा

आदेश है

date +"%s" 

http://unixhelp.ed.ac.uk/CGI/man-cgi?date

संपादित करें: कुछ लोगों को आप दिन के लिए कहा देखा है तो यह इस बात का परिणाम है आदेश 86,400

+6

ध्यान दें कि '% s' एक एक्सटेंशन है। POSIX दिनांक में '% s' नहीं है। विवरण के लिए http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html देखें। – Jens

+1

सभी दिनों में 86400 सेकेंड नहीं हैं (डीएसटी, लीप सेकेंड, आदि ...) –

+5

फिर, यूनिक्स समय (दिनांक +% s) में प्रत्येक दिन 86400 "सेकेंड" होता है, इसमें लीप सेकंड और निश्चित रूप से डीएसटी नहीं शामिल होता है। जवाब सही है। –

1
echo `date +%s`/86400 | bc 
+1

सभी दिनों में 86400 सेकेंड नहीं हैं (डीएसटी, लीप सेकंड, आदि ...) –

+5

लेकिन प्रत्येक 'यूनिक्स डे' में 86400 सेकेंड हैं –

संबंधित मुद्दे