Как получить время эпохи в сценарии оболочки (для ksh)?

Как получить время эпохи в сценарии оболочки (для ksh)? Меня интересует получение времени начала дня (например, сейчас 28 июля 2011 г. ~ 14:25:00 по восточному времени, мне нужно время в полночь).


ksh
person NOMO    schedule 28.07.2011    source источник


Ответы (2)


Если у вас есть дата GNU,

epoch=$( date -d 00:00 +%s )

В противном случае, если у вас есть tclsh,

epoch=$( echo 'puts [clock scan 00:00]' | tclsh )

В противном случае,

epoch=$( perl -MTime::Local -le 'print timelocal(0,0,0,(localtime)[3..8])' )
person glenn jackman    schedule 28.07.2011

ksh's printf '%(fmt)T' поддерживает расчет времени. Например:

$ printf '%T\n' now
Mon Mar 18 15:11:46 CST 2013
$ printf '%T\n' '2 days ago'
Sat Mar 16 15:11:55 CST 2013
$ printf '%T\n' 'midnight today'
Mon Mar 18 00:00:00 CST 2013
$
person pynexj    schedule 18.03.2013
comment
Обратите внимание, что существует незначительная ошибка с printf '%T' в старых версии ksh, которая исправлена ​​в 93u+ 2012-02-29. - person pynexj; 18.03.2013