我们一直使用这个Julian Day计算器作为发布号码:
http://www.csgnetwork.com/juliantruncdateconv.html
现在我们想要自动化构建/发布过程并将构建号(从今天的日期)插入到相关的源代码中。
如何在perl中复制这个TJD函数?
答案 0 :(得分:1)
这似乎有效:
#!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;
看起来可以简化,但这会给出正确的数字
答案 1 :(得分:0)
您可以使用CPAN模块Time :: JulianDay然后自行截断它。
这应该有效:
use Time::JulianDay;
my $jd = julian_day($year, $month_1_to_12, $day);
根据您提供的链接,您可以通过减去JD来计算TJD - 2440000.5:
$jd = $jd - 2440000.5;