首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl获取UTC时间并获取UTC时间戳之间的差异

问Perl获取UTC时间并获取UTC时间戳之间的差异
EN

Stack Overflow用户
提问于 2012-02-07 02:55:02
回答 5查看 13.9K关注 0票数 4

我正在寻找一些Perl的帮助,了解如何正确地完成这项工作。我不介意使用一个库来做这件事。

我从mySQL数据库中提取了一个协调世界时的时间戳,格式为: 2012-02-06 13:50:09

我需要Perl获取当前的UTC时间,并以分钟(或秒)为单位获取两个时间戳之间的差值。我在Unix子进程中执行此操作,但我很难获得UTC时间并进行比较,因为本地计算机是在东部时间运行的。我不介意在Unix时间这样做,但不确定如何准确地获得UTC时间,以便与mysql中的"last_timestamp“进行比较,”UTC“是mysql中基于UTC的时间戳。

代码语言:javascript
复制
my $date_diff = qx(date -d "\$(date +'%F %T')" +%s) -
qx(date -d            "$last_timestamp" +%s); 

我们将一如既往地感谢和重视您的帮助。

EN

回答 5

Stack Overflow用户

发布于 2012-02-07 03:25:49

  1. 范例错误。Unix机器不会“在东部时间运行”或“在太平洋时间运行”。Unix机器在“自纪元以来的秒数”上运行,并且有一个默认时区,用于向用户表示时间值。
  2. 你可以使用'date -u‘让'date’返回UTC时间,
  3. Perl的time内置函数返回自纪元以来的秒数(没有时区)。然后可以使用Perl的gmtime内置函数将其转换为UTC M-D-H-M-S值。调用不带任何参数的gmtime实际上与解析MySQL日期/时间值的gmtime(time).
  4. Use DateTime::Format::MySQL相同。您可能还会发现DateTime很有用。另请参阅http://datetime.perl.org/
票数 15
EN

Stack Overflow用户

发布于 2012-02-07 03:17:01

一种方法是使用核心Time::Piece

代码语言:javascript
复制
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
my $when = q(2012-02-06 13:50:09);
my $t = Time::Piece->strptime( $when, "%Y-%m-%d %H:%M:%S" );
print "delta seconds = ", time() - $t->strftime("%s"),"\n";
票数 2
EN

Stack Overflow用户

发布于 2012-02-07 03:25:20

这是一个使用DateTime的解决方案

代码语言:javascript
复制
use strict;
use warnings;
use DateTime;

my $date_str="2012-02-06 13:50:09";

my ($year,$month,$day,$hour,$min,$sec);

if($date_str=~/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/)
{
  $year=$1;
  $month=$2;
  $day=$3;
  $hour=$4;
  $min=$5;
  $sec=$6;
}
else
{
  die "Couldn't parse timestamp $date_str\n";
}

my $dt=DateTime->new(
  year=>$year,
  month=>$month,
  day=>$day,
  hour=>$hour,
  minute=>$min,
  second=>$sec,
  time_zone=>"UTC"
);

my $now=DateTime->now;
$now->set_time_zone("UTC");

my $difference=$now->delta_ms($dt);

print "The difference is " . (60*($difference->minutes) + ($difference->seconds)) . " seconds\n";

输出为:

代码语言:javascript
复制
The difference is 2078 seconds

这听起来很对。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9165572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档