Он ${X#0}должен убирать начальные 0, которые в некоторых оболочках нравятся bash, dashи poshвызывают проблемы 09(где оболочка жалуется на то, что это недопустимое восьмеричное число).
Я предпочел бы использовать что-то вроде этого:IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight ))
x-yuri
7
Не нужно никаких арифметических выражений, просто используйте чистую дату:
Ответы:
Чтобы избежать условий гонки, по-прежнему предполагая дату GNU:
С помощью
zsh
вы можете сделать это внутри:В часовых поясах, где нет перехода на летнее время, вы можете сделать следующее:
Он
${X#0}
должен убирать начальные 0, которые в некоторых оболочках нравятсяbash
,dash
иposh
вызывают проблемы09
(где оболочка жалуется на то, что это недопустимое восьмеричное число).источник
IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight ))
Не нужно никаких арифметических выражений, просто используйте чистую дату:
источник
brew install coreutils
и заменитьdate
наgdate
На основе bash, получить текущее время в миллисекундах с полуночи в системе GNU, это можно сделать так:
источник
date -d @$seconds