开发者

How do I convert local time to a Unix timestamp in Perl?

开发者 https://www.devze.com 2022-12-19 23:16 出处:网络
For example: from da开发者_开发知识库te: 10/02/2010 How do I convert an equal timestamp for 10/02/2010 00:00:00 in Perl?

For example: from da开发者_开发知识库te: 10/02/2010

How do I convert an equal timestamp for 10/02/2010 00:00:00 in Perl?

I can't use local time or time .. is there another way to achieve this?


You can use the Time::Local core module:

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

Note that the month argument for timelocal() is in the range 0..11.


Without localtime():

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

(See perldoc.)

A standard way would be something like:

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"

(From Converting Unix time and readable time with Perl)


You could use Date::Parse:

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

On my machine this prints 1285970400, which corresponds to October 2nd, 2010 (I live in +1 GMT with +1 Wintertime.)


I think you want the built-in module Time::Local.


The DateTime module should be helpful here. In particular, I believe the DateTime::Format::Natural module can parse a user-supplied date string. From there, you have a DateTime object and can print it out or transform it as you like.


Depending on where your initial date is coming from you might be able to parse it using

Date::Manip

and calling

ParseDate("10/02/2010")

You can then take that output and convert it into whatever format you wish.

0

精彩评论

暂无评论...
验证码 换一张
取 消