Das ${X#0}ist führenden 0s abzustreifen , die in einigen Muscheln mag bash, dashund poshverursachen Probleme mit 09(wo die Schale beklagt sich über sie eine ungültige Oktalzahl wird).
Ich würde lieber etwas in diese Richtung verwenden:IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight ))
x-yuri
7
Es ist kein arithmetischer Ausdruck erforderlich. Verwenden Sie einfach das reine Datum:
Antworten:
Um Rennbedingungen zu vermeiden, wird weiterhin das GNU-Datum angenommen:
Mit
zsh
können Sie es intern tun:In Zeitzonen, in denen es keinen Sommerzeitschalter gibt, können Sie Folgendes tun:
Das
${X#0}
ist führenden 0s abzustreifen , die in einigen Muscheln magbash
,dash
undposh
verursachen Probleme mit09
(wo die Schale beklagt sich über sie eine ungültige Oktalzahl wird).quelle
IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight ))
Es ist kein arithmetischer Ausdruck erforderlich. Verwenden Sie einfach das reine Datum:
quelle
brew install coreutils
und ersetzendate
durchgdate
Basierend auf Bash kann die aktuelle Zeit in Millisekunden seit Mitternacht auf einem GNU-System wie folgt ausgeführt werden:
quelle
date -d @$seconds