2010-12-22 48 views
1

DateTime::Event::Sunrise
为什么我来到这里的消息‘通过一揽子“日期时间::设为‘无法找到对象的方法’sunrise_datetime’”问题的日期时间::活动::日出

#!/usr/bin/env perl 
use warnings; 
use 5.012; 
use DateTime; 
use DateTime::Event::Sunrise; 

my $dt = DateTime->new(year => 2010, month => 12, day => 22, time_zone => 'CET'); 

my $longitude = 16; 
my $latitude = 48; 
my $sunrise = DateTime::Event::Sunrise ->sunrise (
    longitude => $longitude, 
    latitude => $latitude, 
    altitude => '-0.833', 
    iteration => '1' 
); 
my $sunset = DateTime::Event::Sunrise ->sunset (
    longitude => $longitude, 
    latitude => $latitude, 
    altitude => '-0.833', 
    iteration => '1' 
); 

my $dt1 = $sunrise->sunrise_datetime($dt); 
say "Sunrise is:", $dt1->datetime; 
my $dt2 = $sunrise->sunset_datetime($dt); 
say "Sunset is:", $dt2->datetime; 

# Can't locate object method "sunrise_datetime" via package "DateTime::Set" at ./so.pl line 24. 

回答

1

的文件似乎是错误的就这一个。该人士更好的有它:

# FUNCTIONAL SEQUENCE for sunrise_sunset 
# 
# _GIVEN 
# 
# A sunrise class 
# A DateTime object 
# 
# _THEN 
# 
# Validate the DateTime object is valid 
# Compute sunrise and sunset 
#  
# 
# _RETURN 
# 
# DateTime object that contains the rise times 

的重要组成部分,是你调用它的对象必须是DateTime::Event::Sunrise类的。您的$sunrise对象属于类DateTime::Set

你能得到它通过创建$sunriseDateTime::Event::Sunrise工作:

my $sunrise = DateTime::Event::Sunrise->new(
    longitude => $longitude, 
    latitude => $latitude, 
    altitude => '-0.833', 
    iteration => '1' 
); 

,或者使用通过DateTime::Set而不是提供的迭代设施:

my $dt1 = $sunrise->next($dt); # or current, closest... 
+0

“关于迭代的注意事项...如果您想要更高的精度,则必须使用迭代功能......”。我用“我的$ dt1 = $日出 - >下一个($ dt);”上面引用的迭代功能? – 2010-12-22 15:01:15

1

文档对于那个模块来说太可怕了。但我认为,你想要的以下内容:

#!/usr/bin/env perl 
use warnings; 
use 5.012; 
use DateTime; 
use DateTime::Event::Sunrise; 

my $dt = DateTime->new(year => 2010, month => 12, day => 22, time_zone => 'CET'); 

my $longitude = 16; 
my $latitude = 48; 
my $sunrise = DateTime::Event::Sunrise ->sunrise (
    longitude => $longitude, 
    latitude => $latitude, 
    altitude => '-0.833', 
    iteration => '1' 
); 
my $sunset = DateTime::Event::Sunrise ->sunset (
    longitude => $longitude, 
    latitude => $latitude, 
    altitude => '-0.833', 
    iteration => '1' 
); 

my $dt1 = $sunrise->next($dt); 
say "Sunrise is: ", $dt1->datetime; 
my $dt2 = $sunset->next($dt); 
say "Sunset is: ", $dt2->datetime; 

它返回这样的:

$ ./sunrise 
Sunrise is: 2010-12-22T07:43:20 
Sunset is: 2010-12-22T16:05:30 
+0

现在我想说的文档,甚至错(关于我的例子)。 – 2010-12-22 14:30:47