Gointerface接口声明实现及作用详解
746
2022-06-13
在我们日常生活中离不开时钟,从早上的脑中叫醒到晚上提醒睡觉,时间在我们身边一分一秒地流过。可是,在我们生活中接触的是智能手机或者电脑上的时间,却没有接触编程语言设计的秒表时间。今天就带大家了解一下如何使用C语言编写秒表。
实现思路及代码
如何获取流逝的时间长度?
要实现一个秒表,首先要知道从开始计时至今过了多久。在*nix 系统中,表示时刻的事实标准是Epoch Time[1],在shell脚本中要获取 Epoch Time 可以用date命令。再用首尾时刻相减便得到了期间流逝的秒数了,示例代码如下
begin_at=$(date '+%s') # 睡个觉 end_at=$(date '+%s')
((interval=${end_at} - ${begin_at}))
双圆括号是一种在shell脚本中执行算术运算的语法,其它语法可以参见Math in Shell Scripts[2]。
如何换算为时分秒?
有了interval中存储的总秒数后,换算成时分秒便是轻而易举的事情,示例代码如下
((hours=${interval} / 3600)) ((minutes=(${interval} % 3600) / 60)) ((seconds=(${interval} % 3600) % 60))
如何输出形如hh:mm:ss的格式?
hh:mm:ss的意思是分别用两个十进制数字显示时分秒,并以冒号分隔它们。如果有任何一个单位的数值小于 10,便用字符0填充左侧的空白。按这个格式,凌晨 1 点 2 分 3 秒便会显示为01:02:03。
要在命令行中打印字符串,最容易想到的便是echo命令,只可惜它不能方便地实现填充字符0的需求。
强人所难也不是不行,示例代码如下
hours=1
minutes=2
seconds=3
if [ "${hours}" -lt '10' ];
then
echo -n "0${hours}"
else
echo -n "${hours}"
fi
echo -n ':'
if [ "${minutes}" -lt '10' ];
then
echo -n "0${minutes}"
else
echo -n "${minutes}"
fi
echo -n ':'
if [ "${seconds}" -lt '10' ];
then
echo -n "0${seconds}"
else
echo -n "${seconds}"
fi
更优雅的方法是用printf命令来自动填充左侧的字符0
printf "%02d:%02d:%02d" ${hours} ${minutes} ${seconds}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~