从一种日期时间格式转换为另一种日期时间格式
Convert from one date-time format to a different date-time format
我想将用作 Perl 脚本参数的时间转换为不同的格式。
输入的格式为 yyyyMMddHHmmss
(例如 20190101235010
)。
输出的格式应为 yyyy-MM-dd-HH:mm:ss
(例如 2019-01-01-23:50:10
)。
如果解决方案不使用 Perl 模块(POSIX 除外)会更好。
核心模块 Time::Piece 可以轻松做到这一点。
use strict;
use warnings;
use Time::Piece;
# if input is the format you specified:
my $input = '20190101235010';
my $time = Time::Piece->strptime($input, '%Y%m%d%H%M%S');
print $time->strftime('%Y-%m-%d-%H:%M:%S'), "\n";
# if input is a unix epoch timestamp:
my $input = time;
my $time = gmtime $input;
print $time->strftime('%Y-%m-%d-%H:%M:%S'), "\n";
以下是一些非常适合的备选方案:
my $output =
sprintf "%s-%s-%s-%s:%s:%s",
unpack 'a4 a2 a2 a2 a2 a2',
$input;
my $output = $input =~ s/^(....)(..)(..)(..)(..)(..)\z/---::/sr;
my $output = $input =~ /^(....)(..)(..)(..)(..)(..)\z/s
? "---::"
: die("Bad input\n");
我想将用作 Perl 脚本参数的时间转换为不同的格式。
输入的格式为 yyyyMMddHHmmss
(例如 20190101235010
)。
输出的格式应为 yyyy-MM-dd-HH:mm:ss
(例如 2019-01-01-23:50:10
)。
如果解决方案不使用 Perl 模块(POSIX 除外)会更好。
核心模块 Time::Piece 可以轻松做到这一点。
use strict;
use warnings;
use Time::Piece;
# if input is the format you specified:
my $input = '20190101235010';
my $time = Time::Piece->strptime($input, '%Y%m%d%H%M%S');
print $time->strftime('%Y-%m-%d-%H:%M:%S'), "\n";
# if input is a unix epoch timestamp:
my $input = time;
my $time = gmtime $input;
print $time->strftime('%Y-%m-%d-%H:%M:%S'), "\n";
以下是一些非常适合的备选方案:
my $output =
sprintf "%s-%s-%s-%s:%s:%s",
unpack 'a4 a2 a2 a2 a2 a2',
$input;
my $output = $input =~ s/^(....)(..)(..)(..)(..)(..)\z/---::/sr;
my $output = $input =~ /^(....)(..)(..)(..)(..)(..)\z/s
? "---::"
: die("Bad input\n");