вычисления даты с использованием времени Unix - PullRequest
0 голосов
/ 16 марта 2011

Нужна помощь в Unix для получения следующих отметок даты с использованием даты Unix:

today at 12:00am  
12:00am - 15 days ago
12:00am - 30 days ago 

в эпоху Unix?(1300295838)

Ответы [ 4 ]

3 голосов
/ 16 марта 2011

Сегодня в 12:

mydate="`date +%D` 12:00"

Чтобы сделать арифметику даты:

date -d "$mydate 15 days ago"

Чтобы узнать время эпохи:

date +%s

Чтобы собрать в oneliner:

date -d "`date +%D` 12:00 15 days ago" +%s
1 голос
/ 29 июня 2012

для вычисления даты для YESTERDAY:

время - текущее время в секундах (количество секунд в дне)

dateYYYYMMDD=`perl -MPOSIX -le 'print strftime "%Y%m%d", localtime(time-60*60*24);'`

время +/- рассчитать секунды для вашегожелаемая дата после или до текущего времени в секундах.

0 голосов
/ 16 марта 2011

Вы можете использовать библиотеку Perl, такую ​​как DateTime , чтобы сделать это довольно легко.

Например, следующий код создает новую дату, которую я вычтя через 15 дней с сегодняшнего дня, а затем вызывает функцию эпохи:

use DateTime;

my $dt = DateTime->now
                 ->subtract(days => 15)
                 ->set_hour(0)
                 ->set_minute(0)
                 ->set_second(0);

print $dt->epoch(),"\n";
0 голосов
/ 16 марта 2011

Вы можете использовать date -d на оболочке, чтобы она отображала указанное вами время, а не текущее время. Символы форматирования времени см .: http://unixhelp.ed.ac.uk/CGI/man-cgi?date

...