呵呵,只是一个毛坯
总是有讨论关于时间计算的帖子,各个系统的手法不同
下面这个脚本将时间戳转化为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:
|