bash – 在UNIX中将Julian时间戳转换为常规时间
我需要使用
Bash将Julian时间戳转换为UNIX中的Regular时间戳.
在Tandem OS上,转换非常简单 – 例: $OLSAPP SYSTST 1> #interprettimestamp 212186319010244541 #interprettimestamp 212186319010244541 expanded to: 2455860 2011 10 25 16 10 10 244 541 我希望在UNIX环境中也这样做.转换将是解析器脚本的一部分.所以单行者将不胜感激. 更新: Tandem上的INTERPRETTIMESTAMP内置函数返回一个以空格分隔的九个数字列表,包括Julian日数,年,月,日,小时,分钟,秒,毫秒和微秒. 解决方法
假设这个数字是@blahdiblah所说的那样
然后你首先需要知道01-JAN-1970的Julian时间戳,这是unix时间的纪元.所以一个cludgy oracle查询给出了 210866803200000000 那么理论上你可以用一个shell命令来计算自1970年1月1日以来的秒数. unixtime=$(( ( 212186319010244541 - 210866803200000000 ) / 1000000 )) 这个问题是: >你仍然需要格式化它 现在,如果你安装了perl,你可以使用bigint和POSIX模块解决这些问题.作为一个外壳“一”衬里看起来像 perl -mbigint -mPOSIX -e 'print( POSIX::strftime("%Y-%m-%d %T",localtime( ($ARGV[0]-210866803200000000)/1000000 ) )."n")' 212186319010244541 这使 2011-10-25 15:10:10 1小时的差异可能是由于夏令时差异造成的.它可能是在perl中,或者更可能是我在1970年1月1日使用的值可能是一小时.因此,您可能需要检查它们以确保它适合您的系统. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |