मैं आधी रात के बाद से सेकंड कैसे पता करूँ?


11

dateकार्यक्रम का उपयोग करते हुए , मैं आधी रात के बाद से सेकंड की संख्या की गणना कैसे कर सकता हूं?


1
दिनांक "+ (% H * 60 +% M) * 60 +% S" | bc
groxxda

1
गूंज $ (($ (तिथि '+ (% H * 60 +% M) * 60 +% S')))
groxxda

जवाबों:


14

दौड़ की स्थिति से बचने के लिए, अभी भी GNU तिथि मान रहे हैं:

eval "$(date +'today=%F now=%s')"
midnight=$(date -d "$today 0" +%s)
echo "$((now - midnight))"

इसके साथ zsh, आप इसे आंतरिक रूप से कर सकते हैं:

zmodload zsh/datetime
now=$EPOCHSECONDS
strftime -s today %F $now
strftime -rs midnight %F $today
echo $((now - midnight))

विशेष रूप से, टाइमज़ोन में जहां दिन के उजाले की बचत स्विच नहीं है, आप कर सकते हैं:

IFS=:
set -- $(date +%T)
echo "$((${1#0} * 3600 + ${2#0} * 60 + ${3#0}))"

0 ${X#0}को स्ट्रिप करने के लिए है, जो कुछ शेल में पसंद करता है bash, dashऔर poshसमस्याओं के साथ कारण बनता है 09(जहां शेल को इसके बारे में शिकायत है कि यह एक अमान्य ऑक्टेबल नंबर है)।


Eval का बहुत ही चतुर और अच्छा उपयोग
उलरिच डेंगल

मैं इन पंक्तियों के साथ कुछ का उपयोग करूँगा:IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight ))
x-yuri

7

किसी भी अंकगणितीय अभिव्यक्ति की आवश्यकता नहीं है, बस शुद्ध तिथि का उपयोग करें:

date -d "1970-01-01 UTC $(date +%T)" +%s

महान जवाब, शीर्ष एक होना चाहिए।
लियोपोल्डो सैंसिएक

1
मैक पर brew install coreutilsऔर इसके dateसाथgdate
कॉनर मैककॉर्मिक

2

बैश के आधार पर , जीएनयू प्रणाली पर आधी रात के बाद से मिलीसेकंड में वर्तमान समय प्राप्त करें , इसे इस तरह से किया जा सकता है:

$ now=$(date '+%s')
$ midnight=$(date -d 'today 00:00:00' '+%s')
$ echo $(( now - midnight ))
53983

2
आप यह सुनिश्चित करना चाहते हैं कि आप 23:59:59
स्टीफन चेज़लस जूल 25'14

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