Perl:毫秒到日期+时间

标签 perl datetime

我正在尝试将 Perl 中包含毫秒的变量转换为日期/时间格式。 问题是变量来自大型机 TIMESTAMP,它不能被 Unix/Linux 转换,因为如果我没记错的话,持续时间从 1900-01-01 00:00:00 开始。 提前致谢。

Perl:

my $milli_secs = ((hex(unpack('H*', substr($updt_time,0,3))) * 1099511627776) +
              (hex(unpack('H*', substr($updt_time,3,3))) * 65536) +
              (hex(unpack('H*', substr($updt_time,6,2)))));
$milli_secs = $milli_secs / 16;
$milli_secs = ($milli_secs * 3.90625) / 1000000;
print "$milli_secs\n";
my $tp = DateTime->from_epoch( epoch => $milli_secs );
print "Date ==> $tp\n";

结果: 3747753982164.99 日期 ==> 120731-08-07T04:49:24

我的变量: EBCDIC 时间戳:D508FF8D00000000 通过一些计算,我有: 纳秒:3.74775398216499e+18 毫秒:3747753982164.99

哪个应该给我(我认为): 2018-10-05 18:46:22.1

最佳答案

您需要获取 1900-01-01 的时间值并将其用作您的纪元:

use Time::Local;

my $epoch = timelocal(0,0,0,1,0,1900);

my $ms = 3747753982164.99;
my $time = $ms / 1000;

print scalar localtime $epoch + $time, "\n";

输出

Fri Oct  5 19:16:05 2018

关于Perl:毫秒到日期+时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56656989/

相关文章:

mysql - 查询返回空行之间的日期

java - Java/Android 中 Time 类功能的替换以及 DateTime 类的理解

perl - 如何制作 Perl 哈希引用的浅拷贝?

perl - 如何在 Perl 中休眠一毫秒?

c - 根据列合并两个文件并排序

python - 如何在Python中添加+5 GMT时间?

java - 如何在间隔中获得周末? Joda Time

regex - 如何通过 sed/perl 删除行同时保留某些字符?

perl - 如何使用 Perl 将文本添加到图像?

python - 在 Python 中将日期序列化为 url 安全字符串