代码之家  ›  专栏  ›  技术社区  ›  joe

如何在Perl中将本地时间转换为Unix时间戳?

  •  1
  • joe  · 技术社区  · 15 年前

    例如:开始日期: 10/02/2010

    如何转换等时戳 10/02/2010 00:00:00 在Perl中

    我不能用当地时间。有没有其他方法可以做到这一点……

    6 回复  |  直到 9 年前
        1
  •  4
  •   Andomar    15 年前

    你可以使用 Date::Parse 以下内容:

    use Date::Parse;
    print str2time('10/02/2010 00:00:00');
    

    在我的机器上,这打印了1285970400,其中 corresponds 到2010年10月2日(我住在格林尼治标准时间+1,冬季+1。)

        2
  •  10
  •   Eugene Yarmash    9 年前

    你可以使用 Time::Local 核心模块:

    use Time::Local 'timelocal';
    my ($d, $m, $y) = split '/', '10/02/2010';
    my $time = timelocal(0, 0, 0, $d, $m-1, $y);
    

    注意月份参数 timelocal() 在射程之内 0..11 .

        3
  •  7
  •   mre    15 年前

    不带localtime():

    use Time::Local;    
    $time = timelocal($sec,$min,$hour,$mday,$mon,$year);
    

    (见PelDoc)

    一个标准的方法是:

    use POSIX;
    
    use strict;
    use warnings;
    
    my $sec  = 0;
    my $min  = 0;
    my $hour = 0;
    my $day  = 10;
    my $mon  = 2 - 1;
    my $year = 2010 - 1900;
    my $wday = 0;
    my $yday = 0;
    
    my $unixtime = mktime ($sec, $min, $hour, $day, $mon, $year, $wday, $yday);
    print "$unixtime\n";
    
    my $readable_time = localtime($unixtime);
    print "$readable_time\n"
    

    (来自 http://www.adp-gmbh.ch/perl/posix/convert_time.html )

        4
  •  3
  •   brian d foy    15 年前

    我想你想要内置模块 Time::Local .

        5
  •  2
  •   dsolimano    15 年前

    这个 DateTime 模块在这里应该很有用。尤其是,我相信 DateTime::Format::Natural 模块无法分析用户提供的日期字符串。从那里,您就有了一个日期时间对象,可以打印出来,也可以根据需要进行转换。

        6
  •  1
  •   Pollett    15 年前

    根据初始日期的来源,您可能可以使用

    日期:MANIP

    呼唤

    ParseDate(“2010年2月10日”)

    然后,您可以获取该输出并将其转换为您希望的任何格式。