首页 > 学技术 > 技术网文 > Linux Shell > 正文

[精彩] 一个关于时间转换的awk脚本


来源 chinaunix.net 酷勤网整理

呵呵,只是一个毛坯
总是有讨论关于时间计算的帖子,各个系统的手法不同
下面这个脚本将时间戳转化为YYYYMMDDHHMMSS的GMT时间
比如想得到半小时前的GMT时间
t=$(date +%s)
let t=t-1800
echo t|./tmst2gmt.sh
就可以得到了,1800是半小时的秒数
写的很粗糙,当然也可以用shell现实,我用了awk给大家抛一砖

#!/bin/awk -f
#name tmst2gmt.sh
#eg: date +%s|tmst2gmt.sh
#    echo $(($(date +%s) - 300))|tmst2gmt.sh
function tmst2gmt(timest)
{
close("date +%s")
split("365 366 365 365",dpy)
split("31 28 31 30 31 30 31 31 30 31 30 31",dpm)
split("31 29 31 30 31 30 31 31 30 31 30 31",dpdm)
year=timest/(1461*24*3600)
sub(/\..*/,"",year)
year=1970+year*4
timec=timest%(1461*24*3600)
for (i=1;(timec-dpy*24*3600)>0;i++){year++;timec=timec-dpy*24*3600}
month++
if(year%4==0){
for (i=1;(timec-dpdm*24*3600)>0;i++){month++;timec=timec-dpdm*24*3600}}
else{
for (i=1;(timec-dpm*24*3600)>0;i++){month++;timec=timec-dpm*24*3600}}
day=timec/24/3600
sub(/\..*/,"",day)
day++
timec=timec%(24*3600)
hour=timec/3600
sub(/\..*/,"",hour)
timec=timec%3600
min=timec/60
sub(/\..*/,"",min)
second=timec%60
printf "%4s%02s%02s%02s%02s%02s\n", year, month, day, hour, min, second
}

{tmst2gmt($0)}




 寂寞烈火 回复于:2005-11-29 18:14:47

绝对原创,支持!!


 r2007 回复于:2005-11-29 18:29:13

如果是gnu awk, 那么strftime()函数也可以做到。


 另一只 回复于:2005-11-29 18:31:12

waker、烈火 ,那个文件名匹配的问题请帮我看一下,谢谢啊
http://bbs.chinaunix.net/viewthread.php?tid=656035&extra=page%3D1


 waker 回复于:2005-11-29 19:05:13

引用:原帖由 r2007 于 2005-11-29 18:29 发表
如果是gnu awk, 那么strftime()函数也可以做到。 



用gnu date更方便,非GNU用户也是亲妈生的
:mrgreen:


 flw 回复于:2005-11-29 19:08:35

引用:原帖由 waker 于 2005-11-29 19:05 发表


用gnu date更方便,非GNU用户也是亲妈生的
:mrgreen: 


唉!
看来还是学 Perl 好啊~


 寂寞烈火 回复于:2005-11-29 19:10:07

引用:原帖由 flw 于 2005-11-29 19:08 发表

唉!
看来还是学 Perl 好啊~ 


嗯,对时间戳的转换,一个函数就搞定, :mrgreen:


 dbcat 回复于:2005-11-29 19:23:57

引用:原帖由 寂寞烈火 于 2005-11-29 19:10 发表

嗯,对时间戳的转换,一个函数就搞定, :mrgreen: 




用Perl没有挑战 
好想用sed编一个


 honbj 回复于:2005-11-30 06:04:21

反对
引用:原帖由 dbcat 于 2005-11-29 19:23 发表
用Perl没有挑战 
好想用sed编一个 




 dbcat 回复于:2005-11-30 12:19:12

引用:原帖由 honbj 于 2005-11-30 06:04 发表
反对
 



和你有么关系。。。。。。。 
:evil::evil:


 寂寞烈火 回复于:2005-11-30 12:22:36

引用:原帖由 dbcat 于 2005-11-29 19:23 发表



用Perl没有挑战 
好想用sed编一个 


支持MM :mrgreen:




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=658778
转载请注明作者名及原文出处



收藏本页到: