2011-07-15 91 views
0

基本问题在标题中:我有一个unix时间戳和一个时区,例如: “America/Caracas”,我想将其转换为当地时区。Perl:如何将unix时间戳+时区转换为本地时间

通过计算器搜索,我发现别人asking pretty much the same question,然而,所提供的答案代码

$t = new DateTime(); 
$t->setTimestamp($time=time()); 
$t->setTimeZone(new DateTimeZone("America/Denver")); 
print $t->format(DateTime::RFC850); 

不起作用(了?)。 DateTime()不允许我设置时间戳;我查看了DateTime源代码,但也没有看到,我可以在哪里连接自己的时间戳。任何想法/帮助?

非常感谢提前!

+0

那篇文章提到'DateTime in PHP'而不是'perl' – Rahul

+0

哎哟,我完全过度劳累!感谢那! woops! – Sarah

回答

-1

尝试:

my $epoch = time; 
warn $epoch; 
my $dt = DateTime->from_epoch(epoch => $epoch); 
warn $dt->year; 
#and so on 
+0

这对我不起作用,尝试$ dt->年时出现错误。通过$ ENV {TZ}进行初步的解决方案,尽管我阅读了一些也不推荐的帖子。 – Sarah

+0

除非你告诉我错误是什么,我无法帮助 – marto

+1

你的代码将返回UTC时间,而不是当地时间。这可能是他的意思是“不起作用”。 –

4
use DateTime; 

my $dt = DateTime->from_epoch(
    epoch  => time(), 
    time_zone => "America/Denver" 
); 
print "$dt\n"; 

DateTime文档的详细信息。

+0

工作!谢谢! – Sarah

+1

如果有效,那么你应该接受他的答案! –

相关问题