【问题标题】:Perl: How to convert a unix timestamp+timezone into local timePerl:如何将 unix 时间戳+时区转换为本地时间
【发布时间】:2011-07-15 14:08:45
【问题描述】:

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

通过stackoverflow搜索,我找到了其他人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 源,但也没有看到我可以在哪里连接我自己的时间戳。有什么想法/帮助吗?

非常感谢!

【问题讨论】:

  • 那个帖子指的是DateTime in PHP而不是perl
  • 哎呀,我完全过度劳累了!感谢那!哎呀!

标签: perl date time timezone localtime


【解决方案1】:
use DateTime;

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

有关详细信息,请参阅DateTime 文档。

【讨论】:

    【解决方案2】:

    试试:

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

    【讨论】:

    • 这对我不起作用,我在尝试 $dt-> 年时遇到错误。通过 $ENV{TZ} 可以作为初步解决方案,尽管我阅读了一些也不推荐这样做的帖子。
    • 您的代码将返回 UTC 时间,而不是本地时间。这可能就是他所说的“不起作用”的意思。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2012-06-10
    • 2019-03-09
    • 1970-01-01
    • 2015-12-22
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多