使用unix时间计算日期

时间:2011-03-16 17:25:49

标签: unix unix-timestamp

在unix中寻求帮助以使用unix日期获取以下日期戳:

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

在Unix时代? (1300295838

4 个答案:

答案 0 :(得分:3)

今天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 :(得分:1)

计算YESTERDAY的日期:

时间是以秒为单位的当前时间(一天中的秒数)

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

时间+/-计算当前时间之前或之后所需日期的秒数,以秒为单位。

答案 2 :(得分:0)

您可以在shell上使用date -d让它显示您指定的时间,而不是当前时间。有关时间格式化字符的信息,请参阅:http://unixhelp.ed.ac.uk/CGI/man-cgi?date

答案 3 :(得分:0)

您可以使用DateTime之类的perl库来轻松完成此操作。

例如,以下代码创建了一个新日期,我从今天开始减去15天,然后调用纪元函数:

use DateTime;

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

print $dt->epoch(),"\n";