perl - 在 Perl 中获取 UTC 偏移量的最佳方法是什么?

我需要以跨平台(Windows 和各种风格的 Unix)的方式在 Perl 中获取当前时区的 UTC 偏移量。它应该符合这种格式:

zzzzzz, which represents ±hh:mm in relation to UTC

看起来我应该可以通过 strftime() 获得它,但它似乎不一致。

Unix:

Input: perl -MPOSIX -e "print strftime(\"%z\", localtime());"
Output: -0700

window :

Input: perl -MPOSIX -e "print strftime(\"%z\", localtime());"
Output: Mountain Standard Time

虽然 Unix 似乎给了我我想要的东西(或者至少是接近的东西),但 Windows 却没有。我很确定我可以使用 Date::Time 或类似的东西来做到这一点,但我真的希望没有任何依赖项,由于我们的广泛安装,我无法保证用户将拥有基地。

我在这里遗漏了一些明显的东西吗?提前致谢。

最佳答案

Time::Local 应该可以解决问题

use Time::Local;
@t = localtime(time);
$gmt_offset_in_seconds = timegm(@t) - timelocal(@t);

https://stackoverflow.com/questions/2143528/

相关文章:

java - 是否有可用的 Java 库完全支持 Excel 的格式字符串?

c++ - 输出带有数字分组的数字(1000000 为 1,000,000 等等)

python - 如何在没有任何额外符号(方括号 [] 和元素之间的空格)的情况下打印 Numpy

visual-studio-2008 - 如何添加法国商标符号 (MD)?

python - 我怎样才能产生一个很好的 numpy 矩阵输出?

c# - 在 C# 中将 Excel 范围作为文本数组或单元格格式的快速方法?

c# - 单元格值的条件格式

xml - 选择性地关闭 XML 文件的 Eclipse 格式

javascript - Highcharts y轴千位分隔符

c++ - 使用 BOOST_FOREACH 时如何使 Eclipse CDT 自动缩进?