加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 在solaris中将给定时间转换为秒

发布时间:2020-12-15 21:09:34 所属栏目:安全 来源:网络整理
导读:我有时间像2013-04-29 08:17:58.我需要将其转换为自纪元时间以来的秒数. 请不要perl和我的操作系统是solaris. %s不起作用. nawk’BEGIN {print srand()}’将当前时间转换为秒,但不会将给定时间转换为秒. 谢谢 解决方法 这是一个不需要perl的 shell函数: fu
我有时间像2013-04-29 08:17:58.我需要将其转换为自纪元时间以来的秒数.
请不要perl和我的操作系统是solaris. %s不起作用. nawk’BEGIN {print srand()}’将当前时间转换为秒,但不会将给定时间转换为秒.

谢谢

解决方法

这是一个不需要perl的 shell函数:

function d2ts
{
    typeset d=$(echo "$@" | tr -d ':- ' | sed 's/..$/.&/')
    typeset t=$(mktemp) || return -1
    typeset s=$(touch -t $d $t 2>&1) || { rm $t ; return -1 ; }
    [ -n "$s" ] && { rm $t ; return -1 ; }
    truss -f -v 'lstat,lstat64' ls -d $t 2>&1 | nawk '/mt =/ {printf "%dn",$10}'
    rm $t
}
$d2ts 2013-04-29 08:17:58           
1367216278

请注意,返回的值取决于您的时区.

$TZ=GMT d2ts 2013-04-29 08:17:58
1367223478

这个怎么运作:

>第一行将参数转换为适合触摸的格式(此处为“2013-04-29> 08:17:58“ – >”201304290817.58“)>第二行创建一个临时文件>第三行将刚刚创建的文件的修改时间更改为所需的值>如果设置时间失败,即第四行中止该功能,即提供的时间是否无效>第五行跟踪ls命令以获取文件修改时间并将其打印为整数>第六行删除临时文件

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读