
Как работает формат времени Unix? Например, время Unix для 3:00 PM:
Normal time format <----3:00PM = 1402565420----> Unix Time
Как мне заставить его понимать время как3:00 ВЕЧЕРА?
решение1
Время Unix указывается каксекунд с начала эпохи: количество секунд (не считая високосных секунд), прошедших с 00:00:00 по всемирному координированному времени (UTC) или четверга, 1 января 1970 года,
Команда GNU date
имеет несколько очень хороших функций, которые позволяют вам переводить между различными форматами времени. Они очень хорошо объяснены в , man date
поэтому я приведу здесь только несколько примеров:
### "Normal" format
$ date
Thu Jun 12 11:44:23 CEST 2014
### Unix time
$ date +%s
1402566271
Для преобразования можно указать date
конкретную дату с помощью -d
флага. Однако, чтобы получить дату Unix, это должна быть полная дата. Вы не можете преобразовать 3:00PM в Unix-время, поскольку Unix-время относится к целой дате (год, месяц, день, время). Так, например, чтобы получить дату Unix для 12 сентября 1987 года, вы должны сделать следующее:
$ date -d "3 PM 12 September 1987" +%s
558450000
И чтобы преобразовать это обратно в «нормальную» дату:
$ date -d "@558450000"
Sat Sep 12 15:00:00 CEST 1987