11 En utilisant le dateprogramme, comment puis-je calculer le nombre de secondes depuis minuit? date Mignon la source 1 date "+ (% H * 60 +% M) * 60 +% S" | bc groxxda 1 echo $ (($ (date '+ (% H * 60 +% M) * 60 +% S'))) groxxda Réponses: 14 Pour éviter les conditions de concurrence, en supposant toujours la date GNU: eval "$(date +'today=%F now=%s')" midnight=$(date -d "$today 0" +%s) echo "$((now - midnight))" Avec zsh, vous pouvez le faire en interne: zmodload zsh/datetime now=$EPOCHSECONDS strftime -s today %F $now strftime -rs midnight %F $today echo $((now - midnight)) De manière portable, dans les fuseaux horaires où il n'y a pas de commutateur d'heure d'été, vous pouvez faire: IFS=: set -- $(date +%T) echo "$((${1#0} * 3600 + ${2#0} * 60 + ${3#0}))" Le ${X#0}est de dépouiller premier plan 0s qui , dans certains coquillages aiment bash, dashet poshcauser des problèmes avec 09(où la coquille se plaint à ce sujet étant un nombre octal non valide). Stéphane Chazelas la source Très intelligent et bon usage d'eval Ulrich Dangel Je préfère utiliser quelque chose comme ça:IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight )) x-yuri 7 Aucune expression arithmétique n'est nécessaire, utilisez simplement la date pure: date -d "1970-01-01 UTC $(date +%T)" +%s Ipor Sircer la source Grande réponse, devrait être la première. Leopoldo Sanczyk 1 Sur Mac brew install coreutilset remplacer datepargdate Connor McCormick 2 Basé sur bash, obtenez l'heure actuelle en millisecondes depuis minuit , sur un système GNU, cela peut être fait comme ceci: $ now=$(date '+%s') $ midnight=$(date -d 'today 00:00:00' '+%s') $ echo $(( now - midnight )) 53983 fedorqui la source 2 Vous voulez vous assurer de ne pas le faire à 23:59:59 Stéphane Chazelas Et pour reconvertir:date -d @$seconds choroba
14 Pour éviter les conditions de concurrence, en supposant toujours la date GNU: eval "$(date +'today=%F now=%s')" midnight=$(date -d "$today 0" +%s) echo "$((now - midnight))" Avec zsh, vous pouvez le faire en interne: zmodload zsh/datetime now=$EPOCHSECONDS strftime -s today %F $now strftime -rs midnight %F $today echo $((now - midnight)) De manière portable, dans les fuseaux horaires où il n'y a pas de commutateur d'heure d'été, vous pouvez faire: IFS=: set -- $(date +%T) echo "$((${1#0} * 3600 + ${2#0} * 60 + ${3#0}))" Le ${X#0}est de dépouiller premier plan 0s qui , dans certains coquillages aiment bash, dashet poshcauser des problèmes avec 09(où la coquille se plaint à ce sujet étant un nombre octal non valide). Stéphane Chazelas la source Très intelligent et bon usage d'eval Ulrich Dangel Je préfère utiliser quelque chose comme ça:IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight )) x-yuri 7 Aucune expression arithmétique n'est nécessaire, utilisez simplement la date pure: date -d "1970-01-01 UTC $(date +%T)" +%s Ipor Sircer la source Grande réponse, devrait être la première. Leopoldo Sanczyk 1 Sur Mac brew install coreutilset remplacer datepargdate Connor McCormick 2 Basé sur bash, obtenez l'heure actuelle en millisecondes depuis minuit , sur un système GNU, cela peut être fait comme ceci: $ now=$(date '+%s') $ midnight=$(date -d 'today 00:00:00' '+%s') $ echo $(( now - midnight )) 53983 fedorqui la source 2 Vous voulez vous assurer de ne pas le faire à 23:59:59 Stéphane Chazelas Et pour reconvertir:date -d @$seconds choroba
7 Aucune expression arithmétique n'est nécessaire, utilisez simplement la date pure: date -d "1970-01-01 UTC $(date +%T)" +%s Ipor Sircer la source Grande réponse, devrait être la première. Leopoldo Sanczyk 1 Sur Mac brew install coreutilset remplacer datepargdate Connor McCormick 2 Basé sur bash, obtenez l'heure actuelle en millisecondes depuis minuit , sur un système GNU, cela peut être fait comme ceci: $ now=$(date '+%s') $ midnight=$(date -d 'today 00:00:00' '+%s') $ echo $(( now - midnight )) 53983 fedorqui la source 2 Vous voulez vous assurer de ne pas le faire à 23:59:59 Stéphane Chazelas Et pour reconvertir:date -d @$seconds choroba
2 Basé sur bash, obtenez l'heure actuelle en millisecondes depuis minuit , sur un système GNU, cela peut être fait comme ceci: $ now=$(date '+%s') $ midnight=$(date -d 'today 00:00:00' '+%s') $ echo $(( now - midnight )) 53983 fedorqui la source 2 Vous voulez vous assurer de ne pas le faire à 23:59:59 Stéphane Chazelas Et pour reconvertir:date -d @$seconds choroba
Réponses:
Pour éviter les conditions de concurrence, en supposant toujours la date GNU:
Avec
zsh
, vous pouvez le faire en interne:De manière portable, dans les fuseaux horaires où il n'y a pas de commutateur d'heure d'été, vous pouvez faire:
Le
${X#0}
est de dépouiller premier plan 0s qui , dans certains coquillages aimentbash
,dash
etposh
causer des problèmes avec09
(où la coquille se plaint à ce sujet étant un nombre octal non valide).la source
IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight ))
Aucune expression arithmétique n'est nécessaire, utilisez simplement la date pure:
la source
brew install coreutils
et remplacerdate
pargdate
Basé sur bash, obtenez l'heure actuelle en millisecondes depuis minuit , sur un système GNU, cela peut être fait comme ceci:
la source
date -d @$seconds