Perl时区转换 - 但仅使用核心模块

时间:2013-05-04 14:42:16

标签: perl timezone perl-core

以后只使用Perl核心模块,是否可以为'任意'日期进行时区转换?

让我说我有这一天:月份:年份,小时:分钟时区X(假设它是一个完全合格的时区,如America / New_York),我需要将其转换为时区Y(比如亚洲/加尔各答)

一些注意事项:

1)这适用于OSX(Lion或以上)

2)我知道如何使用DateTime和DateManip,但这些不是核心模块,需要安装C编译器。我正在尝试将我的程序分发给“非技术”用户 - 他们可以在帮助下进行perl模块安装,但在尝试使用XCode,命令行工具等工作时会崩溃。有些人试图安装DateTime,但他们陷入了错误/依赖关系并放弃了。

3)我尝试使用tzset的组合;和ENV TZ - 但不能用于任意日期 - 仅适用于当地时间(这意味着,我可以将'现在时间'转换为任何时区)

1 个答案:

答案 0 :(得分:5)

使用POSIX核心模块。例如:

use POSIX;

$ENV{TZ} = 'Europe/Madrid';
$time_t = POSIX::mktime( 10, 30, 17, 4, 4, 113 );
print POSIX::ctime($time_t); #<-- prints: Sat May  4 17:30:10 2013

$ENV{TZ} = 'Europe/London';
print POSIX::ctime($time_t); #<-- prints: Sat May  4 16:30:10 2013