- 论坛徽章:
- 0
|
大家帮我看下这个程序的后边几句该怎么理解?
不用看你的程序了,给你写一个你试试:
cat filename
20040228091823 20040228091823
20040228091823 20040301091823
20040228091823 20040301101823
20051127091853 20060301090059
20050928091820 20060301091803
20050521091829 20050522091426
程序如下:
nawk 'function daynum(y, m, d, days, i, n){
split("31 28 31 30 31 30 31 31 30 31 30 31", days)
n = (y - 1901) * 365 + int((y - 1901) / 4)
if (y % 4 == 0)
days[2]++
for (i = 1; i < m; i++)
n += days
return n + d
}
{
day1 = daynum(substr($1, 1, 4), substr($1, 5, 2), substr($1, 7, 2))
day2 = daynum(substr($2, 1, 4), substr($2, 5, 2), substr($2, 7, 2))
}
{
printf("%s %20d\n", $0, (day2 - day1) * 24 * 3600 + (substr($2, 9, 2) - substr($1, 9, 2)) * 3600 + (substr($2, 11, 2) - substr($1, 11, 2)) * 60 + (substr($2, 13, 2) - substr($1, 13, 2)))
}' filename
运行结果如下:
20040228091823 20040228091823 0
20040228091823 20040301091823 172800
20040228091823 20040301101823 176400
20051127091853 20060301090059 8120526
20050928091820 20060301091803 13305583
20050521091829 20050522091426 86157
声明:本程序适合计算1901---2099之间的秒数。 |
|