3

将来是否可以仅使用 Perl 核心模块为“任意”日期进行时区转换?

假设我在时区 X 中有 Day:month:year, hr:min(假设它是一个完全合格的时区,如 America/New_York),我需要将其转换为时区 Y(比如 Asia/Kolkata)

一些注意事项:

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

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

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

4

1 回答 1

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
于 2013-05-04T15:32:35.253 回答