我的日期格式为“YYYYMMDDHH”,我想从中添加或减去小时数。 GNU日期(日期-d选项)就像Linux中的魅力一样,但在非GNU环境中不能像Solaris那样。有人可以帮助我如何做到这一点吗?
答案 0 :(得分:1)
以防万一有人在这里寻找上述“非GNU日期”问题的答案:以下问题更合适,答案很好:Date computations without GNU tools
答案 1 :(得分:1)
您应该检查您的Solaris发行版下是否尚未安装gdate
(可能位于/usr/gnu/bin/date
,/usr/sfw/bin/[g]date
,/usr/local/bin/[g]date
,/usr/csw/bin/[g]date
或仅/usr/bin/gdate
取决于版本)。如果没有,应该很容易找到包含GNU日期的包并安装它。
无论如何,这是一个shell函数,它应该只在一个Solaris版本的Solaris版本下工作,并且可以做我认为你想要的东西:
f()
{
echo $1 | perl -MTime::Local -nle '
use POSIX 'strftime';
$op='$2'*3600;
$sec=timelocal(0,0,$4,$3,$2-1,$1) if /(\d{4})(\d{2})(\d{2})(\d{2})/;
$sec=$sec+$op;
print strftime "%Y%m%d%H\n", localtime($sec);'
}
$ f 2014010112 -24
2013123112