繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM