在 AIX 中将日期转换为 unix 时间戳
Convert date to unix timestamp in AIX
我有几个日期像当年那样转换:
20151213 20151214
在 AIX 中似乎 date -d
无法识别 -d 选项
date -d 20151213 +%s
所以我无法将动态接收到的特定日期格式转换为 Unix 时间戳。
如何将 AIX 中的这些日期转换为时间戳?
Perl 的 Time::Local
module 是您所需要的:
perl -e '
use Time::Local;
for $d ("20151213", "20151214") {
($year, $month, $day) = $d =~ /(\d{4})(\d{2})(\d{2})/;
$epoch = timelocal(0,0,0, $day, $month-1, $year-1900);
print "$d => $epoch\n"
}
'
20151213 => 1449982800
20151214 => 1450069200
在 shell 脚本中,我会写
epoch() {
echo "" | perl -MTime::Local -lne '
($year, $month, $day) = /(\d{4})(\d{2})(\d{2})/;
print timelocal(0, 0, 0, $day, $month-1, $year-1900)
'
}
timestamp=$(epoch 20151213)
您可以使用带有 Time::Piece
模块的 Perl 来简洁地完成此操作
use strict;
use warnings 'all';
use feature 'say';
use Time::Piece;
for ( qw/ 20151213 20151214 / ) {
my $time = Time::Piece->strptime($_, '%Y%m%d')->epoch;
say $time;
}
输出
1449964800
1450051200
我有几个日期像当年那样转换:
20151213 20151214
在 AIX 中似乎 date -d
无法识别 -d 选项
date -d 20151213 +%s
所以我无法将动态接收到的特定日期格式转换为 Unix 时间戳。
如何将 AIX 中的这些日期转换为时间戳?
Perl 的 Time::Local
module 是您所需要的:
perl -e '
use Time::Local;
for $d ("20151213", "20151214") {
($year, $month, $day) = $d =~ /(\d{4})(\d{2})(\d{2})/;
$epoch = timelocal(0,0,0, $day, $month-1, $year-1900);
print "$d => $epoch\n"
}
'
20151213 => 1449982800
20151214 => 1450069200
在 shell 脚本中,我会写
epoch() {
echo "" | perl -MTime::Local -lne '
($year, $month, $day) = /(\d{4})(\d{2})(\d{2})/;
print timelocal(0, 0, 0, $day, $month-1, $year-1900)
'
}
timestamp=$(epoch 20151213)
您可以使用带有 Time::Piece
模块的 Perl 来简洁地完成此操作
use strict;
use warnings 'all';
use feature 'say';
use Time::Piece;
for ( qw/ 20151213 20151214 / ) {
my $time = Time::Piece->strptime($_, '%Y%m%d')->epoch;
say $time;
}
输出
1449964800
1450051200