2009-02-18 43 views

回答

0

那些可能是日子,但我不知道;这也不是一个编程问题。

1

使用源,卢克:

sprintf(length, "(%d+%02d:%02d)", days, hours, mins); 

这是从sysvinit源包在Debian。

暗示那些没有C知识的人:这是天数。

+0

什么?这是错误的答案? – hop 2009-02-18 02:12:15

1

圆括号之间的字符串是会话的持续时间。正如你注意到的,时间是结束时间和开始时间之间的差异。 2+是天数hop noted

在某些时候,这个问题可能应该转移到服务器故障,因为它最有可能是系统管理员感兴趣的。

一旦你知道你在看什么,这是一个相当可读的格式。如果我正在设计输出,我想我会让星期几为可选项,并将整个结束日期放在字符串中。更好的办法是让日期戳是可配置的。这样,输出可以更容易地被另一个程序使用。

实际持续时间,如果用户退出的会话是很容易用正则表达式来挑选出:

$ last | perl -lne 'print "$2 days, $3 hours, $4 minutes" if /\(((\d+)\+)(\d{2}):(\d{2})\)$/' 
17 days, 05 hours, 23 minutes 
3 days, 23 hours, 16 minutes 
14 days, 06 hours, 09 minutes 
23 days, 04 hours, 54 minutes 
16 days, 06 hours, 57 minutes 
...