使用strptime解析相对于本地时间的时间戳

HåkonHægland

我正在尝试相对于当前本地时间进行一些日期计算。例如:

use feature qw(say);
use strict;
use warnings;

use Time::Piece;

my $fmt = '%Y-%m-%d_%H:%M:%S';
my $timestamp = "2015-04-12_11:07:27";

# This gives incorrect $t1 relative to localtime
my $t1 = Time::Piece->strptime( $timestamp, $fmt );
my $t2 = localtime;

say "Local time: " . localtime;
say "Local time epoch: " . time;

say $t1->epoch();
say $t2->epoch();

my $timestamp1 = $t1->strftime( $fmt );
my $timestamp2 = $t2->strftime( $fmt );

say $timestamp1;
say $timestamp2;

my $delta = $t2 - $t1;

say $delta;

样本输出:

Local time: Sun Apr 12 12:21:49 2015
Local time epoch: 1428834109
1428836847
1428834109
2015-04-12_11:07:27
2015-04-12_12:21:49
-2738

这显然会导致错误的时差-2738。(它应该是一个正数)

这个

如果您解析的日期时间没有时区信息,则假定为UTC。您可以通过在脚本中添加以下两行来看到这一点:

say "tzo1 = ",$t1->tzoffset;
say "tzo2 = ",$t2->tzoffset;

在巴黎,以上输出如下:

tzo1 = 0
tzo2 = 7200

您可以使用未记录的功能来localtime代替使用默认值作为本地时区,而是将其替换为本地时区Time::Piece

$ perl -MTime::Piece -E'
   say Time::Piece->strptime("2015-04-12_11:07:27", "%Y-%m-%d_%H:%M:%S")->tzoffset;
   say localtime  ->strptime("2015-04-12_11:07:27", "%Y-%m-%d_%H:%M:%S")->tzoffset;
'
0
7200

进行较小的更改即可得到您期望的答案。

$ perl -MTime::Piece -E'
   say localtime->strptime("2015-04-12_11:07:27", "%Y-%m-%d_%H:%M:%S") - localtime;
'
5524

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

相对于(日期,小时,分钟等)的时间戳偏移

来自分类Dev

C ++时区相对于解析时间的偏移

来自分类Dev

要求`ts`打印相对于二进制开始时间的时间戳?

来自分类Dev

strototime()相对于时间的日期

来自分类Dev

显示相对于时间服务器的时间漂移

来自分类Dev

PyMongo,使用相对于数据库时间的时间来处理字段

来自分类Dev

PyMongo,使用相对于数据库时间的时间来处理字段

来自分类Dev

相对于输入字符串中提供的时区解析日期时间

来自分类Dev

MYSQL:可以选择相对于X的最接近的时间戳,该时间戳>>大于X。如果没有,则结果应为最接近的<X?

来自分类Dev

相对于日期范围的日期/时间格式

来自分类Dev

PHP:使时间相对于开始日期提前

来自分类Dev

如何过滤相对于某个日期时间的 SQL 表?

来自分类Dev

计算相对于日出和日落时间的当前时间?

来自分类Dev

无法使用 strptime 解析日期时间

来自分类Dev

将 UTC 时间戳解析为本地时间,忽略时区

来自分类Dev

将日期差异转换为相对于1970年之前的日期(以秒为单位)的时间戳(以秒为单位)。的PHP

来自分类Dev

strptime() 读取相对于公元 1900 年的年份

来自分类Dev

本地请求的时间戳

来自分类Dev

strptime()错误,使用python从时间戳中提取日期

来自分类Dev

如何在Android中获得相对于另一个时区的时间

来自分类Dev

Laravel Carbon相对于当前时间过去了数年

来自分类Dev

最大年龄相对于上次修改日期或请求时间?

来自分类Dev

相对于块数测量cuda执行时间

来自分类Dev

如何导入和读取相对于时间的大型数据集?

来自分类Dev

如何在Android中获得相对于另一个时区的时间

来自分类Dev

在PowerBI线图中,如何绘制相对于时间的常数值

来自分类Dev

计算相对于没有夏令时的时区的正确时间

来自分类Dev

绝对数字的日期时间(相对于设置日期)

来自分类Dev

正确使用UTC时间戳和本地日期时间

Related 相关文章

  1. 1

    相对于(日期,小时,分钟等)的时间戳偏移

  2. 2

    C ++时区相对于解析时间的偏移

  3. 3

    要求`ts`打印相对于二进制开始时间的时间戳?

  4. 4

    strototime()相对于时间的日期

  5. 5

    显示相对于时间服务器的时间漂移

  6. 6

    PyMongo,使用相对于数据库时间的时间来处理字段

  7. 7

    PyMongo,使用相对于数据库时间的时间来处理字段

  8. 8

    相对于输入字符串中提供的时区解析日期时间

  9. 9

    MYSQL:可以选择相对于X的最接近的时间戳,该时间戳>>大于X。如果没有,则结果应为最接近的<X?

  10. 10

    相对于日期范围的日期/时间格式

  11. 11

    PHP:使时间相对于开始日期提前

  12. 12

    如何过滤相对于某个日期时间的 SQL 表?

  13. 13

    计算相对于日出和日落时间的当前时间?

  14. 14

    无法使用 strptime 解析日期时间

  15. 15

    将 UTC 时间戳解析为本地时间,忽略时区

  16. 16

    将日期差异转换为相对于1970年之前的日期(以秒为单位)的时间戳(以秒为单位)。的PHP

  17. 17

    strptime() 读取相对于公元 1900 年的年份

  18. 18

    本地请求的时间戳

  19. 19

    strptime()错误,使用python从时间戳中提取日期

  20. 20

    如何在Android中获得相对于另一个时区的时间

  21. 21

    Laravel Carbon相对于当前时间过去了数年

  22. 22

    最大年龄相对于上次修改日期或请求时间?

  23. 23

    相对于块数测量cuda执行时间

  24. 24

    如何导入和读取相对于时间的大型数据集?

  25. 25

    如何在Android中获得相对于另一个时区的时间

  26. 26

    在PowerBI线图中,如何绘制相对于时间的常数值

  27. 27

    计算相对于没有夏令时的时区的正确时间

  28. 28

    绝对数字的日期时间(相对于设置日期)

  29. 29

    正确使用UTC时间戳和本地日期时间

热门标签

归档