论文部分内容阅读
很多时候我们需要精确计算两个日期或时间之间的间隔,比如计算工龄、入学年龄、倒计时等,有时我们还需要将间隔日期精确到天,将时间间隔精确到小时、分钟、甚至到秒。那么,这种情况下怎样才能准确快速地计算这种时间间隔呢?别着急,使用EXCEL或WPS 2010的金山表格,可以很轻松地完成的。如果您也遇到此类问题,那么下面的操作也许会提供一些帮助。
我们以图1所示的简单表格为例,起始时间位于C2及以下单元格区域,截止时间位于D2及以下单元格区域。
一、精确计算日期间隔
(一)以年为单位
将鼠标定位于E2单元格,在编辑栏输入公式“=DATEDIF(C2,D2,"y")”,按下回车键,就可以得到需要的结果了,如图2所示。然后拖动E2单元格的填充句柄向下复制公式就可以了。
此处所用DATEIF函数,用来计算两个日期之间的天数、月数或年数。其语法规则是:DATEDIF(start_date,end_date,unit)。其中“start_date”表示一个日期,它代表时间段内的第一个日期或起始日期,也可以是日期所在单元格的引用。“End_date”是时间段内最后一个日期或者是结束日期。“Unit”为所需要信息的返回类型。若为"y"则返回时间段的整年数,"M"返回时间段中的整月数,"D"返回时间段中的天数。"YM"则返回时间段中月数的差但忽略日期中的日和年,如公式“=DATEDIF("2010/5/20","2012/6/30","ym")”返回的结果就是“1”,而不管前后两个日期中间相差多少年。同样若返回类型为"MD",则只返回天数的差,而忽略间隔中的月和年。
(二)以月为单位
明白了DATEDIF函数的应用规则,那么下面的操作就简单多了。在F2单元格输入如下的公式:“=DATEDIF(C2,D2,"m")”。回车并向下复制公式即可得到以月数表示的日期间隔。
(三)以日为单位
在G2单元格输入如下的公式:“=DATEDIF(C2,D2,"d")”。回车并向下复制公式即可得到用天数表示的时间间隔了。
(四)以年、月、日精确表示
现在想起来,这个任务实现起来也不算困难:只要得到日期段中的间隔整年数、忽略年、日的整月数和忽略年、月的天数,再把它们联结起来就可以了。将鼠标定位于H2单元格,输入如下公式“=DATEDIF(C2,D2,"y")&"年"&DATEDIF(C2,D2,"ym")&"月"&DATEDIF(C2,D2,"md")&"日"”,回车并复制公式,就可以得到如图3所示的结果了。
公式中所用的“&”为字符串连接符,可以用它将两个字符串连接成一个。比如公式“="AB"&"CD"”(不含外层双引号),就可以得到字符串“ABCD”。
二、精确计算时间间隔
有些时候我们会计算两个精确到分或秒的时间间隔,比如“2010-7-5 11:30:00”和“2011-6-7 9:00:00”之间到底差多少天多少小时多少分钟多少秒?又折合多少分钟多少秒?这个问题用函数来解决就容易多了。
(一)用天时分秒格式表示
先将起始时间和终止时间分别输入到J2单元格和K2单元格,假定结果输出于L2单元格。如果单纯计算时间间隔,我们只需要在L2单元格输入公式:“=K2-J2”,回车后就可以得到结果“336.8958333”天了。但是如果我们需要将它表示成“××天××小时××分钟××秒”格式,那么公式就需要稍稍地复杂一下子:“=CONCATENATE(TRUNC(K2-J2),"天",HOUR(K2-J2),"小时",MINUTE(K2-J2),"分",SECOND(K2-J2),"秒")”。回车就可以得到结果“336天21小时30分0秒”。如图4所示。
函数CONCATENATE用来连接文本项,其语法规则是:CONCATENATE(text1,text2,…),“text1,text2,…”为2到255个将要合并成单个文本项的文本项。这些文本项可以为文本字符串、数字或对单个单元格的引用。我们也可以用前边所说的“&”来代替这个函数。比如“="AB"&"CD"”与“=CONCATENATE("AB","CD")”的结果就是一样的。
函数TRUNC的作用是将数字的小数部分截去,返回整数。
函数HOUR的作用是返回时间值中的小时数,为介于0和23之间的整数。
函数MINUTE的作用是返回时间值中的分钟数,为介于0和59之间的整数。
函数SECOND的作用是返回时间值中的秒数,为介于0和59之间的整数。
(二) 时分秒格式
如果不需要天数,而是将天数转化为小时数呢?那么就需要将公式改写为“=CONCATENATE(TRUNC(K2-J2)*24+HOUR(K2-J2),"小时",MINUTE(K2-J2),"分",SECOND(K2-J2),"秒")”。看出来了吧?就是把原公式中得到的天数乘以24就可以转换成小时数了。
(三)以秒表示
用上面的思路,即使将时间差值全部转化为以秒为单位也不是件难事。只需要将公式改成“=CONCATENATE(TRUNC(K2-J2)*24*3600+HOUR(K2-J2)*3600+MINUTE(K2-J2)*60+SECOND(K2-J2),"秒")”即可。
好了,时间差值这回算明白了吧?就到这里,就到这里吧。
我们以图1所示的简单表格为例,起始时间位于C2及以下单元格区域,截止时间位于D2及以下单元格区域。
一、精确计算日期间隔
(一)以年为单位
将鼠标定位于E2单元格,在编辑栏输入公式“=DATEDIF(C2,D2,"y")”,按下回车键,就可以得到需要的结果了,如图2所示。然后拖动E2单元格的填充句柄向下复制公式就可以了。
此处所用DATEIF函数,用来计算两个日期之间的天数、月数或年数。其语法规则是:DATEDIF(start_date,end_date,unit)。其中“start_date”表示一个日期,它代表时间段内的第一个日期或起始日期,也可以是日期所在单元格的引用。“End_date”是时间段内最后一个日期或者是结束日期。“Unit”为所需要信息的返回类型。若为"y"则返回时间段的整年数,"M"返回时间段中的整月数,"D"返回时间段中的天数。"YM"则返回时间段中月数的差但忽略日期中的日和年,如公式“=DATEDIF("2010/5/20","2012/6/30","ym")”返回的结果就是“1”,而不管前后两个日期中间相差多少年。同样若返回类型为"MD",则只返回天数的差,而忽略间隔中的月和年。
(二)以月为单位
明白了DATEDIF函数的应用规则,那么下面的操作就简单多了。在F2单元格输入如下的公式:“=DATEDIF(C2,D2,"m")”。回车并向下复制公式即可得到以月数表示的日期间隔。
(三)以日为单位
在G2单元格输入如下的公式:“=DATEDIF(C2,D2,"d")”。回车并向下复制公式即可得到用天数表示的时间间隔了。
(四)以年、月、日精确表示
现在想起来,这个任务实现起来也不算困难:只要得到日期段中的间隔整年数、忽略年、日的整月数和忽略年、月的天数,再把它们联结起来就可以了。将鼠标定位于H2单元格,输入如下公式“=DATEDIF(C2,D2,"y")&"年"&DATEDIF(C2,D2,"ym")&"月"&DATEDIF(C2,D2,"md")&"日"”,回车并复制公式,就可以得到如图3所示的结果了。
公式中所用的“&”为字符串连接符,可以用它将两个字符串连接成一个。比如公式“="AB"&"CD"”(不含外层双引号),就可以得到字符串“ABCD”。
二、精确计算时间间隔
有些时候我们会计算两个精确到分或秒的时间间隔,比如“2010-7-5 11:30:00”和“2011-6-7 9:00:00”之间到底差多少天多少小时多少分钟多少秒?又折合多少分钟多少秒?这个问题用函数来解决就容易多了。
(一)用天时分秒格式表示
先将起始时间和终止时间分别输入到J2单元格和K2单元格,假定结果输出于L2单元格。如果单纯计算时间间隔,我们只需要在L2单元格输入公式:“=K2-J2”,回车后就可以得到结果“336.8958333”天了。但是如果我们需要将它表示成“××天××小时××分钟××秒”格式,那么公式就需要稍稍地复杂一下子:“=CONCATENATE(TRUNC(K2-J2),"天",HOUR(K2-J2),"小时",MINUTE(K2-J2),"分",SECOND(K2-J2),"秒")”。回车就可以得到结果“336天21小时30分0秒”。如图4所示。
函数CONCATENATE用来连接文本项,其语法规则是:CONCATENATE(text1,text2,…),“text1,text2,…”为2到255个将要合并成单个文本项的文本项。这些文本项可以为文本字符串、数字或对单个单元格的引用。我们也可以用前边所说的“&”来代替这个函数。比如“="AB"&"CD"”与“=CONCATENATE("AB","CD")”的结果就是一样的。
函数TRUNC的作用是将数字的小数部分截去,返回整数。
函数HOUR的作用是返回时间值中的小时数,为介于0和23之间的整数。
函数MINUTE的作用是返回时间值中的分钟数,为介于0和59之间的整数。
函数SECOND的作用是返回时间值中的秒数,为介于0和59之间的整数。
(二) 时分秒格式
如果不需要天数,而是将天数转化为小时数呢?那么就需要将公式改写为“=CONCATENATE(TRUNC(K2-J2)*24+HOUR(K2-J2),"小时",MINUTE(K2-J2),"分",SECOND(K2-J2),"秒")”。看出来了吧?就是把原公式中得到的天数乘以24就可以转换成小时数了。
(三)以秒表示
用上面的思路,即使将时间差值全部转化为以秒为单位也不是件难事。只需要将公式改成“=CONCATENATE(TRUNC(K2-J2)*24*3600+HOUR(K2-J2)*3600+MINUTE(K2-J2)*60+SECOND(K2-J2),"秒")”即可。
好了,时间差值这回算明白了吧?就到这里,就到这里吧。