Perl 字符串转换成UNIX时间戳

最近遇到一个需求,调用perl脚本,由于自己不会perl硬着头皮上

实现的功能是,下一周任一时间发送上一周一周报


#!/usr/bin/perl -w
 
#检测是否是闰年
#输入参数年:数值类型
#如:2017
sub is_leap_year{
    my ($year) = @_;
    my $flag = 0;
    if((($year) %4 == 0 && ($year) % 100 != 0) || ($year) % 400 == 0){
        $flag = 1;
    }else{
        $flag = 0;
    }
    return $flag;
}
#返回偏移后的unix时间戳
#参数:年,月,日,偏移日期(可正可负),数值类型
#如:2017,9,15,-3,返回2017-9-12-0;00:00的unix时间戳
sub getOffsetTimeSecond{
    my $ii = 0;
    my $j = 0 ;
    my $sec = 0;
    my ($year,$month,$day,$offsetday) = @_;
     
    my @days = (0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
     
    for($ii =1970;$ii < $year; $ii = $ii + 1 )
    {
        my $gg = is_leap_year($ii);
        my $flag = 1;  
 
        if($gg == $flag){
            $sec += 31622400;
        }else{
            $sec += 31536000;
        }      
    }
    for( $j = 1; $j < $month; $j = $j + 1)
    {
        my $mm = 2;
        my $ll = is_leap_year($year);
        my $flagg = 1;
        $sec += $days[$j] * 86400;
        if( $j == $mm && $flagg == $ll)
        {
            $sec += 86400;
        }
    }
    $sec += ($day- 1) * 86400;
    $sec -= 28800;
    $sec += 86400 * $offsetday;
 
    return $sec;
}
 
my $txdate;
my $jobname;
$txdate = $ARGV[2];
$jobname = $ARGV[1];
 
my $y=substr($txdate, 0, 4) + 0;
my $m=substr($txdate,4,2) + 0;
my $d=substr($txdate,6,2) + 0;
     
my $mysecondtest = getOffsetTimeSecond($y,$m,$d,0);
my ($tsec1,$tmin1,$thour1,$tmday1,$tmon1,$tyear_off1,$twday1) = localtime($mysecondtest);
 
if($twday1 == 0){
    $twday1 += 7;
}
my $lastsecond = getOffsetTimeSecond($y,$m,$d,-6-$twday1);
 
my($sec,$min,$hour,$day,$mon,$year) = localtime($lastsecond);  
 
$mon++;
$year += 1900; 
 
 
$txdate = sprintf("%04d%02d%02d",$year,$mon,$day); 
#print "$txdate\n";
 
#发送报表 周报RP_SOHU_AD_WEEKLY
my $code=system("/bin/sh /opt/dwetl/tableau/sh/tableau_mail.sh 'RP_AD_WEEKLY' '$txdate'");
exit $code/256;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值