[英]Convert Current Date to Unix timestamp but using Days
在Solaris中,我试图编写一个Shell脚本,将Unix的当前日期转换为1970年1月1日之后的天数。 这是因为etc / shadow不是使用纪元时间,而是使用“天数格式”
即“ root:G9yPfhFAqvlsI:15841 ::::::”,其中15841是日期。
因此,从本质上讲,我现在使用什么命令来找出当前时间,然后将其转换为天数。
您可能没有GNU工具,这会使事情变得更容易。 不过,这很简单:
perl -le 'print int(time/86400)'
我找到了一些伪代码来从基础上进行计算:
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}'
Solaris date
实用程序不支持%s
格式。 但是, nawk
实用程序具有srand()
函数,当没有参数传递给它时,它以秒为单位返回日期。
nawk 'BEGIN {print srand()}'
结果是
1405529923
要获得天数而不是秒数,可以将结果除以86400。
nawk 'BEGIN {printf("%d", srand() / 86400)}'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.