将当前日期转换为Unix时间戳,但使用天数

时间:2014-07-15 18:37:41

标签: shell unix solaris epoch solaris-10

在Solaris中,我正在尝试编写一个shell脚本,将当前日期转换为1970年1月1日之后Unix的天数。这是因为etc / shadow不是使用Epoch时间而是使用'天格式'

即" root:G9yPfhFAqvlsI:15841 ::::::" 15841是约会的地方。

所以本质上我用什么命令来找出现在的纪元时间然后将其转换为天。

3 个答案:

答案 0 :(得分:1)

你可能没有GNU工具,这可能会让事情变得更容易。这很简单:

perl -le 'print int(time/86400)'

答案 1 :(得分:0)

我从基础知识中找到了一些伪代码来计算它:

if month > 2 then
  month=month+1
else
  month=month+13
  year=year-1
fi

day=(year*365)+(year/4)-(year/100)+(year/400)+(month*306001/10000)+day
days_since_epoch=day-719591

信用:http://www.unix.com/shell-programming-and-scripting/115449-how-convert-date-time-epoch-time-solaris.html)。在同一论坛帖子中,另一张海报说这可以在Solaris中使用:

truss /usr/bin/date 2>&1 | grep ^time | awk -F"= " '{print $2}'

答案 2 :(得分:0)

Solaris date实用程序不支持%s格式。但是,nawk实用程序具有srand()函数,该函数在没有传递参数的情况下以秒为单位返回日期。

nawk 'BEGIN {print srand()}'

结果

1405529923

要获取天数而不是秒数,您可以将结果除以86400。

nawk 'BEGIN {printf("%d", srand() / 86400)}'