जवाबों:
दौड़ की स्थिति से बचने के लिए, अभी भी 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(जहां शेल को इसके बारे में शिकायत है कि यह एक अमान्य ऑक्टेबल नंबर है)।
IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight ))
किसी भी अंकगणितीय अभिव्यक्ति की आवश्यकता नहीं है, बस शुद्ध तिथि का उपयोग करें:
date -d "1970-01-01 UTC $(date +%T)" +%s
brew install coreutilsऔर इसके dateसाथgdate
बैश के आधार पर , जीएनयू प्रणाली पर आधी रात के बाद से मिलीसेकंड में वर्तमान समय प्राप्त करें , इसे इस तरह से किया जा सकता है:
$ now=$(date '+%s')
$ midnight=$(date -d 'today 00:00:00' '+%s')
$ echo $(( now - midnight ))
53983
date -d @$seconds