时间函数time、hour、minute、second的基本用法
hour、minute、second函数
HOUR(serial_number)
serial_number:要取出小时数的一个日期时间值。可以是文本型的日期时间,比如"9:00",也可以是整数或小数表示的日期时间,或者是函数公式返回的日期时间。
MINUTE(serial_number)
HOUR(serial_number)

-02-
time函数
再来看下time函数,它根据指定的小时、分钟和秒数返回时间。是介于0~0.99999999之间的小数,用来表示0:00:00~23:59:59之间的时间。语法如下,有3个参数:
TIME(hour, minute, second)
time函数和date函数类似,会自动进行进制的转换。下图的time将时分秒合成一个时间。

1.计算通话停止时间
比如你和你对象煲电话粥,记录了通话开始时间和通话时长,求通话停止时间。我们知道通话停止时间=通话开始时间+通话时长。
=TIME(HOUR(A10),MINUTE(A10)+B10,SECOND(A10))

首先用hour、minute、second分别把开始时间的小时、分钟和秒数取出来。然后在分钟数上加上通话的分钟数,最后用time合成一个时间。
但是我们在工作中通常不用这个公式。第1,因为它有点长。第2,时间是特殊的数值,可以通过进制来转换。1天=24小时=1440分钟=86400秒。
那么公式为=A10+B10/60/24。首先把B10的分钟数转化为对应的小数,也就是多少天。然后再加上开始时间。用进制的转换,公式就简单多了。
除了用进制转换将分钟数变为小数,还可以用time函数将其转为小数。公式为=A10+TIME(,B10,)。这里TIME(,B10,)=TIME(0,B10,0),是一种省略的写法。
还可以通过构造文本型的时间来将通话的分钟数转换为时间,公式为=A10+("0:"&B10)。"0:"&B10就构造出"0:65",也就是0时65分。
还记得我们昨天说的时间数据的特征吗?秒数可以省略,时分秒中只有1个超过进制时,excel是可以识别为时间的。所以"0:65"是可以被转化为时间的。
2.计算停车费用
下图A列是停车的时长,假如1小时停车费是20元,求停车费用。比如12:10:32就代表停车时长为12小时10分32秒。
在C20单元格输入公式=ROUND(A20*24*20,0)。首先将停车时长乘以24转化为小时数,然后再乘以20,最后用round四舍五入到个位。这里用的是进制转化的方法。

=ROUND((HOUR(A20)+MINUTE(A20)/60+SECOND(A20)/3600)*20,0)
3.把不规则的文本时间改为正常的时间

,有木有)。

=LOOKUP(1,--({"0时0分","0时"}&A32))
思路是将不规范的时间组成"0时0分0秒"的规范时间。我们的数据源中没有小时,只有分钟和秒数。
对于只有秒数的,比如22秒,前面要连接"0时0分"。对于有分钟数的,比如"15分20秒",前面要连接"0时"。
但是我们不想判断是只有秒还是有分有秒。那我们就可以用一个数组{"0时0分","0时"}将它们两个同时和不规范的时间连接起来。
{"0时0分","0时"}&A32返回的结果为{"0时0分2分8秒","0时2分8秒"}。其中第1个值"0时0分2分8秒"是不会被识别为时间的,第2个值"0时2分8秒"是可以被识别为时间的。
通过数学减负运算,--({"0时0分","0时"}&A32)返回的结果为{#VALUE!,0.00148148148148148}。第1个值返回错误值,第2个值返回时间对应的小数。
最后用LOOKUP(1,--({"0时0分","0时"}&A32))返回时间。因为时间是小数,肯定是小于1的。所以查找1就可以找到小数。而且lookup可以忽略错误值。
https://pan.baidu.com/s/1jp5SUK5cgE_TDuqC261dKw