जवाबों:
दौड़ की स्थिति से बचने के लिए, अभी भी 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