Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在perl中计算截断的儒略日?_Perl_Date - Fatal编程技术网

如何在perl中计算截断的儒略日?

如何在perl中计算截断的儒略日?,perl,date,Perl,Date,我们一直在使用这个朱利安日计算器给出发布编号: 现在,我们希望自动化构建/发布过程,并将构建编号(从今天起)插入到相关的源代码中 如何在perl中复制此TJD函数?您可以使用CPAN模块Time::JulianDay,然后自己截断它 这应该起作用: use Time::JulianDay; my $jd = julian_day($year, $month_1_to_12, $day); 根据您提供的链接,您可以通过减去JD-2440000.5计算TJD: $jd =

我们一直在使用这个朱利安日计算器给出发布编号:

现在,我们希望自动化构建/发布过程,并将构建编号(从今天起)插入到相关的源代码中


如何在perl中复制此TJD函数?

您可以使用CPAN模块Time::JulianDay,然后自己截断它

这应该起作用:

    use Time::JulianDay;
    my $jd = julian_day($year, $month_1_to_12, $day);
根据您提供的链接,您可以通过减去JD-2440000.5计算TJD:

    $jd = $jd - 2440000.5;
见:

您可以使用CPAN模块Time::JulianDay,然后自己截断它

这应该起作用:

    use Time::JulianDay;
    my $jd = julian_day($year, $month_1_to_12, $day);
根据您提供的链接,您可以通过减去JD-2440000.5计算TJD:

    $jd = $jd - 2440000.5;
见:

这似乎有效:

#!perl
use POSIX;

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

$yr = $year + 1900;
$mn = $mon + 1;
$hr = 0;
print "Current Date $mday-$mn-$yr\n";

# In leap years, -1 for Jan, Feb, else 0
$L = POSIX::ceil(($mn - 14) / 12);

$p1 = $mday - 32075 + POSIX::floor (1461 * ($yr + 4800 + $L) / 4);
$p2 = POSIX::floor (367 * ($mn - 2 - $L * 12) / 12);
$p3 = 3 * POSIX::floor (POSIX::floor (($yr + 4900 + $L) / 100) / 4);
$julian = $p1 + $p2 - $p3;        
$julian = $julian + ($hr / 24.0) - 0.5;

$tjd = $julian - 2440000.5;

print $tjd;
看起来可以简化,但这给出了正确的数字

这似乎可行:

#!perl
use POSIX;

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

$yr = $year + 1900;
$mn = $mon + 1;
$hr = 0;
print "Current Date $mday-$mn-$yr\n";

# In leap years, -1 for Jan, Feb, else 0
$L = POSIX::ceil(($mn - 14) / 12);

$p1 = $mday - 32075 + POSIX::floor (1461 * ($yr + 4800 + $L) / 4);
$p2 = POSIX::floor (367 * ($mn - 2 - $L * 12) / 12);
$p3 = 3 * POSIX::floor (POSIX::floor (($yr + 4900 + $L) / 100) / 4);
$julian = $p1 + $p2 - $p3;        
$julian = $julian + ($hr / 24.0) - 0.5;

$tjd = $julian - 2440000.5;

print $tjd;

看起来它可以简化,但这给出了正确的数字

有趣的是,看起来模块有一些Innacuises也perl安装不在我的控制之下,所以添加模块它不是一个选项有趣的,看起来模块有一些Innacuises也perl安装不在我的控制之下,所以添加模块它不是一个选项