6 ответов:
добавить.
Получить секунды с эпохи (1 января 1970 года) для любой заданной даты(например, 21 октября 1973 года).date -d "Oct 21 1973" +%s
Преобразуйте количество секунд назад к датеdate --date @120024000
Командаdate- Это довольно универсальный. Еще одна классная вещь, которую вы можете сделать с датой(бесстыдно скопирована сdate --help). Показать местное время на 9 утра в следующую пятницу на западном побережье СШАdate --date='TZ="America/Los_Angeles" 09:00 next Fri'еще лучше, потратьте некоторое время, чтобы прочитать страницу man http://man7.org/linux/man-pages/man1/date.1.html
до сих пор все ответы используют внешнюю программу
date.С Тех Пор Как Bash 4.2,
printfновый модификатор%(dateformat)Tэто, когда используется с аргументом-1выводит текущую дату в формате выданныйdateformat, работающийstrftime(3)(man 3 strftimeдля информации о форматах).Итак, для чистого решения Bash:
printf '%(%s)T\n' -1или если вам нужно сохранить результат в переменной
var:printf -v var '%(%s)T' -1нет внешних программ и нет подрешетки!
начиная с Bash 4.3, можно даже не указывать
-1:printf -v var '%(%s)T'(но было бы разумнее всегда приводить аргумент
-1тем не менее).если вы используете
-2в качестве аргумента вместо-1, Bash будет использовать время запуска оболочки вместо текущей даты (но зачем вам это нужно?).
Это расширение к тому, что @pellucide сделал, но для Macs:
чтобы определить количество секунд с момента эпохи (1 января 1970 года) для любой заданной даты (например, 21 октября 1973 года)
$ date -j -f "%b %d %Y %T" "Oct 21 1973 00:00:00" "+%s" 120034800обратите внимание, что для полноты картины, я добавил часть времени в формат. Причина в том, что
dateбудет принимать любую дату часть вы дали его и добавить настоящее время значение. Например, если вы выполните приведенную выше команду в 4: 19 вечера, без часть "00: 00: 00", она добавит время автоматически. Такие, что "окт 21 1973" будет разбираться как "окт 21 1973 16:19:00". Это может быть не то, что вы хотите.чтобы преобразовать метку времени обратно в дату:
$ date -j -r 120034800 Sun Oct 21 00:00:00 PDT 1973man-страница Apple для реализации даты: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/date.1.html
используйте этот скрипт bash (my
~/bin/epoch):#!/bin/bash # get seconds since epoch test "x" == x && date +%s && exit 0 # or convert epoch seconds to date format (see "man date" for options) EPOCH="" shift date -d @"$EPOCH" "$@"
Comments