Получить текущую дату в эпохе из сценария оболочки Unix


Как получить текущее значение даты в эпоху, т. е. количество дней, прошедших с 1970-1-1. Мне нужно решение в сценарии оболочки unix.

5   51  

5 ответов:

обновление: ответ, ранее опубликованный здесь, связан с пользовательским скриптом, который больше не доступен, только потому, что OP указал, что date +'%s' не работал на него. Пожалуйста, смотрите UberAlex' ответ и ответ кадриана на правильный решений. Короче говоря:

  1. количество секунд С эпохи Unix использовать date(1) как следует:

    date +'%s'
    
  2. количество дней поскольку эпоха Unix делит результат на количество секунд в день (обратите внимание на двойные скобки!):

    echo $(($(date +%s) / 60 / 60 / 24))
    

команда Unix Date отобразится в epoch time

команда

date +"%s"

http://unixhelp.ed.ac.uk/CGI/man-cgi?date

Edit: некоторые люди наблюдали, как вы просили в течение нескольких дней, так что это результат этой команды, разделенной на 86 400

echo $(($(date +%s) / 60 / 60 / 24))
echo `date +%s`/86400 | bc

в зависимости от языка, который вы используете, это будет что-то простое, как

CInt(CDate("1970-1-1") - CDate(Today()))

Как ни странно, вчера был день 40,000, если вы используете 1/1/1900 в качестве "нулевого дня", как и многие компьютерные системы.